簡體   English   中英

Django Development Server 1.7的靜態文件目錄設置略有不同

[英]Static Files With Django Development Server 1.7 Slightly Different Directory Settings

這是我的網站目錄:

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"),
    ),

和我的urls.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">

有任何想法嗎?

謝謝。 哈桑

運行您粘貼的設置會給我一個錯誤的ImproperlyConfigured: The STATICFILES_DIRS setting should not contain the STATIC_ROOT setting 注釋掉os.path.join(os.path.dirname(BASE_DIR), "static"),在設置中刪除了錯誤,並且模板正確地找到了CSS文件,而沒有對URLs.py進行修改。

首先,如@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_ROOT和STATICFILES_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

最后,您應該在urls.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)

這似乎在urls.py中的當前django(2.2)中有效:

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將靜態文件收集到settings.STATIC_ROOT ./manage.py collectstatic

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM