2015-07-02 3 views
2

Я хочу сделать рендеринг html-файла в шаблоне. И используйте jquery .load() для встраивания других html-файлов в этот файл a.html. Но мне не удалось выполнить мой следующий код.JQuery .load() не работает в шаблоне Django

Ниже мое содержание a.html:

<html> 
<head> 
    {% load staticfiles %} 
    <script type="text/javascript" src="{% static "js/jquery-1.10.2.js" %}" /> 
    <script> 
    $(function(){ 
    $("#includeContent").load("abc.html"); 
    }); 
    </script> 
</head> 
<body> 
    <div id="includeContent"></div> 
</body> 
</html> 

Следующая моя abc.html:

<html> 
<body> 
<!-- Hello --> 
<p>Hello world </p> 
</body> 
</html> 

Ниже мое приложение дерево:

- App: 
    views.py 
    models.py 
    - static 
    -js: 
    jquery-1.10.2.js 
    - template: 
    a.html 
    abc.html 

В Отладчик Firebug, я могу видеть исходный код jquery-1.10.2.js, поэтому я думаю, что сценарий jquery успешно включен.

abc.html Я хочу встроить в a.html, должен показать «Hello world» Но я ничего не вижу после загрузки a.html.

Есть ли способ исправить это?

Добавить настройку "Шаблоны":

TEMPLATES = [ 
{ 
    'BACKEND': 'django.template.backends.django.DjangoTemplates', 
    'DIRS': [], 
    'APP_DIRS': True, 
    'OPTIONS': { 
     'context_processors': [ 
      'django.template.context_processors.debug', 
      'django.template.context_processors.request', 
      'django.contrib.auth.context_processors.auth', 
      'django.contrib.messages.context_processors.messages', 
     ], 
    }, 
}, 

]

ответ

2

Django работает на стороне сервера. Он подготавливает ответ на основе запроса. С другой стороны, jQuery работает на стороне клиента. Все события jQuery происходят в браузере пользователя, а load просто сделает другой запрос Django. Но jQuery никак не может обращаться к файлам Django, так как браузер пользователя не может получить доступ к каким-либо вашим файлам проекта на правильно настроенном сервере (надеюсь, ради безопасности).

Поэтому в вашем коде jQuery отправит запрос на конкретный URL-адрес abc.html, поэтому вам необходимо соответственно определить его в своем urls.py или в основном переосмыслить свой дизайн.

+0

Благодарим за внимание на стороне сервера и на стороне клиента. Я думаю, что в моем случае jQuery сделает запрос на abc.html не a.html? –

+0

В urls.py я добавил url (r '^ app/abc /', 'app.views.abc') в urlpatterns. И я определил функцию в views.py, чтобы отобразить этот конкретный запрос в abc.html под шаблонами/abc.html. Кажется, что он все еще не работает ... –

+0

Да, он отправит запрос на 'abc.html'. Проверьте свой код, потому что у вас может быть некоторая ошибка, это общая идея. – Wtower

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