Python 静态文件与Django Development Server 1.7的目录设置略有不同
这是我的网站目录:Python 静态文件与Django Development Server 1.7的目录设置略有不同,python,django,file,static,django-staticfiles,Python,Django,File,Static,Django Staticfiles,这是我的网站目录: django_project \bin \include \lib \src \django_project settings.py \app2 manage.py \static \js \css \media \templates base.html 我添加到我的settings.py中的
django_project
\bin
\include
\lib
\src
\django_project
settings.py
\app2
manage.py
\static
\js
\css
\media
\templates
base.html
我添加到我的settings.py中的内容是:
STATIC_URL = '/static/'
TEMPLATE_DIRS = (
os.path.join(os.path.dirname(BASE_DIR), "templates"),
)
if DEBUG:
MEDIA_URL = '/media/'
STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR), "static"),
MEDIA_ROOT = os.path.join(os.path.dirname(BASE_DIR), "media"),
STATICFILES_DIRS = (
os.path.join(os.path.dirname(BASE_DIR), "static"),
),
和我的URL.py:
if settings.DEBUG:
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
嘿,它不起作用了。我在base.html中引用它们的方式是:
<link href="/static/css/bootstrap.min.css" rel="stylesheet">
有什么想法吗
多谢各位。
Hasan运行您粘贴的设置时给了我一个错误
配置不正确:STATICFILES\u DIRS设置不应包含STATIC\u ROOT设置
。注释掉设置中的os.path.join(os.path.dirname(BASE_DIR),“static”),
删除了错误,模板在没有URL.py修改的情况下正确地找到了CSS文件。首先,正如@r------k所提到的,除了元组之外,我不应该有尾随的逗号。因此settings.py应该如下所示:
if DEBUG:
MEDIA_URL = '/media/'
STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR), "static")
MEDIA_ROOT = os.path.join(os.path.dirname(BASE_DIR), "media")
STATICFILES_DIRS = (
os.path.join(os.path.dirname(BASE_DIR), "static", "static")
),
第二件事是,正如您可能注意到的,STATIC\u ROOT和STATICFILES\u DIRS不可能有相同的值。我在静态文件夹中添加了另一个静态文件夹,并将我的js和css文件夹放在其中:
STATICFILES_DIRS = (
os.path.join(os.path.dirname(BASE_DIR), "static", "static")
),
目录如下所示:
django_project
\bin
\include
\lib
\src
\django_project
settings.py
\app2
manage.py
\static
\static
\js
\css
\media
\templates
base.html
最后,您的URL.py中应该有urlpatterns:
if settings.DEBUG:
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
这似乎在当前的django(2.2)中的
url.py中起作用:
from django.conf import settings
from django.conf.urls.static import serve
from django.urls import include, path
urlpatterns += [
path(settings.STATIC_URL[1:], serve, {'document_root': settings.STATIC_ROOT })
]
请记住运行/manage.py collectstatic
以将静态文件收集到设置中。static\u ROOT
在if DEBUG:
块中,代码中有一些尾随逗号。此外,我不认为需要额外的urlpatterns(我不使用这些),而且它实际上在尾随逗号和目录命名方面存在问题。现在是凌晨2点,今天是我的生日,所以我现在就去睡觉,明天就过了答案:)我没有在这个配置中得到配置不当的错误。即使我修改了url.py,它也找不到。它在查看html时确实会找到它们,但在开发服务器上却找不到。但是谢谢你。构造目录的正确方法应该是什么?我刚刚发现,它实际上存在尾随逗号的问题,并且由于目录命名而导致错误配置。所有其他的东西都是必要的。现在已经凌晨2点了,今天是我的生日,所以我现在就要睡觉了,明天就过了答案:)