Django静态URL错误,未加载

时间:2016-08-03 15:28:57

标签: python django

我现在正迷上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)

我错过了什么?

2 个答案:

答案 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_DIRSSTATIC_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)