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