2010-09-09 4 views
3

У меня есть действительно основной вопрос. Я пытаюсь создать некоторые функции AJAX в проекте Django. Я планирую использовать jQuery. Прямо сейчас, я просто запускаю код локально через Linux. Я тестировал код here, поэтому я уверен, что он работает. Но мне трудно понять, где разместить исходный код jQuery в сочетании с моими настройками.Загрузить jQuery в Django

Я скачал jQuery и поместил его в то, что я думаю, это папка с медиа. Мой settings.py файл выглядит следующим образом:

MEDIA_ROOT = os.path.join(PROJECT_DIR, 'books/media/')<br> 
MEDIA_URL = 'http://localhost:8000/books/media/' 

В моем шаблоне HTML, я ссылка:

<script type="text/javascript" src="/media/js/jquery-1.4.2.min.js"> 

Но ни один из моих функций не работает. Я уверен, что это что-то глупое и очевидное (хотя явно не очевидное для меня). Как правильно настроить jQuery?

ответ

6

Вы можете жёстко ссылку в

<script type="text/javascript" src="/books/media/js/jquery-1.4.2.min.js"> 

или, если вы предоставляете свой шаблон с RequestContext и использовать django.core.context_processors.media контекст процессора, то вы можете получить доступ к MEDIA_URL в шаблоне.

<script type="text/javascript" src="{{ MEDIA_URL }}}js/jquery-1.4.2.min.js"> 
+0

удивительный!Любая идея, почему это работает: , но это не так:

+3

У вас не может быть src и код в теге скрипта в одно и то же время. Это просто способ html. См. Этот вопрос stackoverflow: http://stackoverflow.com/questions/1056325/javascript-inline-script-with-src-attribute – Alasdair

3

Я считаю, что вам нужно src="/books/media/js/jquery-1.4.2.min.js"

Кроме того, хотя, я делаю это константы выглядит.

<script type="text/javascript" src="http://www.google.com/jsapi"></script> 
<script type="text/javascript"> 
    google.load("jquery", "1.4"); 
</script> 
+0

Предпочтительно ли загружать его так или загружать в свой каталог? –

+0

Я предпочитаю делать это так, потому что есть 1 файл Javascript, о котором нужно беспокоиться, и я использую google.load для нескольких других вещей, таких как API их карт. На самом деле, нет ничего плохого в том, чтобы загружать его в свой собственный каталог, если хотите. –

+0

В теории это может сделать ваш сайт быстрее. Если пользователь отправляется на сайт A, который использует Google для размещения jQuery, а затем посещает ваш сайт, то jQuery уже находится в кеше браузера, поэтому его не нужно загружать снова. – Alasdair

1

Вы можете попробовать следующее:

  1. Перейти на URL http://localhost:8000/books/media/js/jquery-1.4.2.min.js с помощью браузера или curl и посмотреть, что поднимается вверх.

  2. Проверьте конфигурацию своего URL-адреса, чтобы увидеть, что у вас есть URL-адрес, предназначенный для использования носителя, используя статическую службу.

2

Вам необходимо настроить Django для обслуживания ваших медиафайлов (в противном случае они будут обслуживаться с надлежащего HTTP-сервера). Добавьте следующую строку в url.py:

(r'^mymedia/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT}), 

Убедитесь, что вы измените mymedia деталь, чтобы выровнять с помощью каталога медиа.

+0

Что значит: обслуживать статические носители? И это необходимо только из местного проекта? –

0

Шаг 1: введите jquery-2.0.3.js в «статическую» подпапку APP, например «books/static/jquery-2.0.3.js»;

Шаг2: конфигурации вашего urls.py, добавьте следующую строку:

r('^static/(?P<path>.*)$','django.views.static.serve'), 

Step3: в файле шаблона, используйте файл JS следующим образом:

<script type="text/javascript" src="/static/jquery-2.0.3.js"></script> 

Это это все.

Смежные вопросы