Как использовать внешние статические файлы с Django (еще раз обслуживая внешние файлы)? - PullRequest
1 голос
/ 08 января 2011

даже после поиска в Google и прочтения всех соответствующих сообщений в StackOverflow я все еще не могу заставить работать статические файлы в моем приложении Django.

Я использую сервер разработки, вот как выглядят мои файлы:

settings.py

MEDIA_ROOT = os.path.join(SITE_ROOT, 'static')
MEDIA_URL = '/static/'

urs.py

from DjangoBandCreatorSite.settings import DEBUG
if DEBUG:
    urlpatterns += patterns('', (
        r'^static/(?P<path>.*)$',
        'django.views.static.serve',
        {'document_root': 'static'}
    ))

шаблон:

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

Я пытаюсь использовать jquery.js, хранящийся в каталоге "static".

Это полный код моего шаблона:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">

    <style>

      span 
      {
        color: blue;
        text-decoration:underline;
        cursor: pointer;
      }
      .nav{
        font-weight: bold;
        font-size: large;
        color: cadetblue;
      }

    </style>

    <script type="text/javascript" src="/static/jquery.js"></script>
    <script type="text/javascript">
    $(document).ready(function()
    {

       $.get("content.html", addContent);   // calls addContent() with argument "content.html"

       function addContent(data)            // fills <div id='content'> with what gets as an argument (in this template, it is "content.html")
       {
          $("#content").html(data);          
       }
    </script>
</head>

<body>
  <div id="content">
  {% block content %}{% endblock %}
    <!--THE RETURN VALUE OF addContent() IS INSERTED HERE-->
  </div>
</body>
</html>

Если я использую src= "http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"

вместо src =" / static / jquery.js "

в теге script все работает нормально. Но при попытке использовать /static/jquery.js я получаюпустая страница при открытии приложения в браузере.

Я использую: Windows XP Python 2.6.4 Django 1.2.3

Большое спасибо за помощь

1 Ответ

1 голос
/ 08 января 2011

Вы не правильно установили document_root для просмотра static_serve. Также обратите внимание, как настройки должны быть импортированы.

from django.conf import settings

# ...

if settings.DEBUG:
    urlpatterns += patterns('',
        url(r'^%s/(?P<path>.*)$'  % settings.MEDIA_URL.strip('/'),
            'django.views.static.serve',
            {'document_root': settings.MEDIA_ROOT,
             'show_indexes': True}),
    )

Это должно работать для Django 1.2, есть некоторые различия в 1.3. Если это не помогает, попробуйте добавить некоторые настройки в ваши настройки:

assert MEDIA_ROOT == r'your/path/here'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...