我现在正迷上Django(1.9)!最可悲的是“静态网址”是给我带来问题的。 “媒体网址”工作正常,没问题,但静态网址令人头疼。
在我的settings_dev.py
中import os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
PROJECT_PATH = os.path.abspath(os.path.dirname(__file__))
STATIC_ROOT = os.path.join(PROJECT_PATH,'../static/')
STATIC_URL = '/static/'
当我添加以下标记时:
{% load static from staticfiles %}
<script type="text/javascript" src="{% static 'datepicker/js/bootstrap-datepicker.js' %}"></script>
js文件无法加载。当我检查我的源代码时,它将显示以下链接。
<script type="text/javascript" src="/static/datepicker/js/bootstrap-datepicker.js"></script>
当我点击它时会将我重定向到
http://127.0.0.1:8000/static/datepicker/js/bootstrap-datepicker.js
并显示
Page not found (404)
Request Method: GET
Request URL: http://127.0.0.1:8000/static/datepicker/js/bootstrap- datepicker.js
现在,我将urls.py调整为
if settings_dev.DEBUG:
# static files (images, css, javascript, etc.)
urlpatterns += patterns('',
(r'^media/(?P<path>.*)$', 'django.views.static.serve', {
'document_root': settings_dev.MEDIA_ROOT, 'show_indexes': True}),
(r'^static/(?P<path>.*)$', 'django.views.static.serve', {
'document_root': settings_dev.STATIC_ROOT, 'show_indexes': True}),
)
然而,我仍然得到同样的错误!!页面未找到问题。
项目目录
PROJECT NAME: Book/
SUB DIRECTORY:
media
static
Template
book
bookapp
manage.py (this is a file)
我错过了什么?
答案 0 :(得分:3)
好的为你说清楚。
STATIC_ROOT是您希望在另一台服务器上提供文件时收集所有静态数据的目录,例如 APACHE或NGINX或者Heroku 左右。
如果您不想只想在本地开发服务器上运行您的网络应用程序,则不需要python manage.py collectstatic
,因此您不需要STATIC_ROOT。
您需要的只是STATIC_URL
,如果您在其他位置也有静态文件,那么您还需要STATICFILES_DIRS = [os.path.join(BASE_DIR, "static"),]
。
因此,您将在基本目录级别拥有一个名为`static'的文件夹,django将在该文件夹中查找您的静态文件。
如果您为STATIC_DIRS
和STATIC_ROOT
指定了相同的文件夹,那么您将自动收到错误消息。 Django不允许你这样做,因为从技术上讲,你试图为两个不同的目的提供相同的目录。
有关详细说明,请参阅此处 - &gt; Differences between STATICFILES_DIR, STATIC_ROOT and MEDIA_ROOT
答案 1 :(得分:1)
STATICFILES_DIRS = [os.path.join(BASE_DIR, "static"),]
该行足以提供项目static
文件夹文件......您必须在urls.py
urlpatterns = [
...
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)