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点了,今天是我的生日,所以我现在就要睡觉了,明天就过了答案:)