Python Django静态Url错误,未加载

Python Django静态Url错误,未加载,python,django,Python,Django,我现在对Django(1.9)很生气!最可悲的是“静态URL”是给我带来问题的那个“媒体URL”运行良好,没有问题,但静态URL令人头痛 在我的设置中\u 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.jo

我现在对Django(1.9)很生气!最可悲的是“静态URL”是给我带来问题的那个“媒体URL”运行良好,没有问题,但静态URL令人头痛

在我的设置中\u 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>
展示

  Page not found (404)
  Request Method:   GET
  Request URL:  http://127.0.0.1:8000/static/datepicker/js/bootstrap-  datepicker.js
现在,我将我的url.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}),
 )
我错过了什么

STATICFILES_DIRS = [os.path.join(BASE_DIR, "static"),]
这一行足以为您的项目提供
静态
文件夹文件。。。您必须在URL.py中设置此选项

urlpatterns = [
    ...
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) 
这一行足以为您的项目提供
静态
文件夹文件。。。您必须在URL.py中设置此选项

urlpatterns = [
    ...
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) 

好的,我会把事情说清楚的

STATIC_ROOT是一个目录,当您想在另一台服务器上(比如说APACHE或NGINX,或者可能在Heroku上)为您的文件提供服务时,您可以在该目录中收集所有静态数据

如果不想在本地开发服务器上运行web应用程序,则不需要
python manage.py collectstatic
,因此不需要STATIC\u ROOT

您所需要的只是
STATIC\u URL
,如果您的静态文件也在其他位置,那么您还需要
STATICFILES\u DIRS=[os.path.join(BASE\u DIR,“STATIC”),]

因此,在基本目录级别将有一个名为“static”的文件夹,django将在其中查找静态文件

如果为
STATIC\u DIRS
STATIC\u ROOT
指定相同的文件夹,则会自动得到一个错误。Django不允许您这样做,因为从技术上讲,您试图为两个不同的目的提供相同的目录


详细解释请参见此->

好的,让您明白

STATIC_ROOT是一个目录,当您想在另一台服务器上(比如说APACHE或NGINX,或者可能在Heroku上)为您的文件提供服务时,您可以在该目录中收集所有静态数据

如果不想在本地开发服务器上运行web应用程序,则不需要
python manage.py collectstatic
,因此不需要STATIC\u ROOT

您所需要的只是
STATIC\u URL
,如果您的静态文件也在其他位置,那么您还需要
STATICFILES\u DIRS=[os.path.join(BASE\u DIR,“STATIC”),]

因此,在基本目录级别将有一个名为“static”的文件夹,django将在其中查找静态文件

如果为
STATIC\u DIRS
STATIC\u ROOT
指定相同的文件夹,则会自动得到一个错误。Django不允许您这样做,因为从技术上讲,您试图为两个不同的目的提供相同的目录



请参阅本文以获得详细解释->

首先,您是否使用本地Python Django开发服务器之外的任何其他服务器来托管您的web应用程序,如Apache或NGINX?也就是说,您是否正在使用
python manage.py collectstatic
?您是否可以向我们展示您的根目录的外观,以便查看static\u url是否正在为静态文件搜索正确的目录?@AnkushRaghuvanshi我已经更新了问题当我运行python manage.py collectstatic时,它会将文件移动到/static/。哪个是正确的文件夹。您是否尝试在
development
production
设置中运行此文件夹?首先,您是否使用本地Python Django开发服务器之外的任何其他服务器来托管您的web应用程序,如Apache或NGINX?也就是说,您是否正在使用
python manage.py collectstatic
?您是否可以向我们展示您的根目录的外观,以便查看static\u url是否正在为静态文件搜索正确的目录?@AnkushRaghuvanshi我已经更新了问题当我运行python manage.py collectstatic时,它会将文件移动到/static/。哪个是正确的文件夹。您是否尝试在
开发
生产
设置中运行此文件夹?静态根目录仅用于部署,这意味着生产服务器。。。请查看此链接。。。我配置错误:STATICFILES\u DIRS设置不应包含STATIC\u ROOT设置您必须将STATIC\u ROOT更改为其他设置。。。像
STATIC\u ROOT='staticfiles'
STATIC\u ROOT仅用于部署,这意味着生产服务器。。。请查看此链接。。。我配置错误:STATICFILES\u DIRS设置不应包含STATIC\u ROOT设置您必须将STATIC\u ROOT更改为其他设置。。。像
STATIC\u ROOT='staticfiles'
谢谢。如果是这种情况,那么我的STATIC_ROOT=os.path.join(PROJECT_path,../STATIC/)就是正确的。它应该能找到它。没有必要使用静态目录,因为我只有一个存储静态文件的位置。此外,我还在开发服务器中。我仍然不知道为什么Django找不到我的静态URL。你应该做的是在基本目录级别创建一个新文件夹。命名为static\u root\u folder。然后在你的settings.py do
STATIC\u ROOT=os.path.join(BASE\u DIR,'STATIC\u ROOT\u folder')
你的
STATIC
文件夹中,收集静态数据并为非python django服务器的服务器提供服务的位置不应该相同。因此,我只是要求您创建一个新文件夹,并为其指定您想要的名称。然后在静态_根中指定。不过,我还是要说,当您只在本地开发服务器(即python django服务器)上工作时,您不需要静态_根。我创建了一个名为static_root的新文件夹,调整了static_root=os.path.join(BASE_DIR,'static_root')和static_URL='/static_root/'但仍然找不到相同的页面。而且url反映在模板中,谢谢。如果是这种情况,那么我的STATIC_ROOT=os.path.join(PROJECT_path,../STATIC/)就是正确的。它应该能找到它。没有必要使用静态目录,因为我只有一个存放静态文件的位置
STATICFILES_DIRS = [os.path.join(BASE_DIR, "static"),]
urlpatterns = [
    ...
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)