Я знаю, что об этом уже спрашивали, но мне трудно настроить JS в моем веб-приложении Django, хотя я читаю документацию.
Я использую сервер разработчиков Django. Моя файловая структура выглядит так:
mysite/
__init__.py
MySiteDB
manage.py
settings.py
urls.py
myapp/
__init__.py
admin.py
models.py
test.py
views.py
templates/
index.html
Где я хочу разместить Javascript и CSS? Я пробовал это в нескольких местах, включая myapp/
, templates/
и mysite/
, но ни одно из них не работает.
Из index.html :
<head>
<title>Degree Planner</title>
<script type="text/javascript" src="/scripts/JQuery.js"></script>
<script type="text/javascript" src="/media/scripts/sprintf.js"></script>
<script type="text/javascript" src="/media/scripts/clientside.js"></script>
</head>
С urls.py :
(r'^admin/', include(admin.site.urls)),
(r'^media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': 'media'})
(r'^.*', 'mysite.myapp.views.index'),
Я подозреваю, что строка serve()
является причиной таких ошибок, как:
TypeError at /admin/auth/
'tuple' object is not callable
Просто чтобы округлить безудержное колебание, я изменил эти настройки в settings.py :
MEDIA_ROOT = '/media/'
MEDIA_URL = 'http://127.0.0.1:8000/media'
ОБНОВЛЕНИЕ : я внес некоторые изменения, но они все еще не работают:
settings.py
ROOT_PATH = os.path.normpath(os.path.dirname(__file__))
urls.py
(r'^media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': os.path.join(settings.ROOT_PATH, 'site_media')}),
index.html
<script type="text/javascript" src="/media/JQuery.js"></script>
<script type="text/javascript" src="/media/sprintf.js"></script>
<script type="text/javascript" src="/media/clientside.js"></script>
Filesystem
mysite/
site_media/
JQuery.js
sprintf.js
clientside.js
__init__.py
settings.py
manage.py
-- etc
myapp/
-- app files, etc
Когда я перехожу на URL, например http://127.0.0.1:8000/media/sprintf.js
, я получаю:
Page not found: /media/sprintf.js