簡體   English   中英

STATIC_URL在基本Django模板中未定義

[英]STATIC_URL undefined in base Django template

我有一個模板base.html ,在其他幾個模板中用於各種視圖。 每個模板都以適當的{% extends "base.html" %}開頭。 在基本模板中,我想要指定一個靜態樣式表:

<link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}/base.css"/>

但是,當它渲染我的大多數模板時, STATIC_URL值為空,因此該屬性僅為href="/base.css" ,不會加載。 該變量是為我綁定到默認登錄視圖django.contrib.auth.views.login的模板正確定義的,但對於我自己的自定義視圖,它是未定義的。

我只是想在runserver的開發環境中使用它,因此CSS文件位於應用程序的靜態子目錄中。

以下是我的settings.py中的相關位,它們都是默認值:

# URL prefix for static files.
# Example: "http://media.lawrence.com/static/"
STATIC_URL = '/static/'

# Additional locations of static files
STATICFILES_DIRS = (
    # Put strings here, like "/home/html/static" or "C:/www/django/static".
    # Always use forward slashes, even on Windows.
    # Don't forget to use absolute paths, not relative paths.
)

# List of finder classes that know how to find static files in
# various locations.
STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
#    'django.contrib.staticfiles.finders.DefaultStorageFinder',
)

TEMPLATE_CONTEXT_PROCESSORS = (
    'django.core.context_processors.debug',
    'django.core.context_processors.i18n',
    'django.core.context_processors.media',
    'django.core.context_processors.static',
    'django.contrib.auth.context_processors.auth',
    'django.contrib.messages.context_processors.messages',
)

在我的urls.py我還添加了:

from django.contrib.staticfiles.urls import staticfiles_urlpatterns

#...

urlpatterns += staticfiles_urlpatterns()

我有什么想法我做錯了嗎? 據我所知,這是基於1.3文檔在開發中提供特定於應用程序的靜態文件所應該做的。

也許這可以幫助:

如果{{STATIC_URL}}在模板中不起作用,則在渲染模板時可能不會使用RequestContext。作為簡要回顧,上下文處理器將變量添加到每個模板的上下文中。 但是,上下文處理器要求您在呈現模板時使用RequestContext。 如果您使用的是通用視圖,則會自動執行此操作,但在手動編寫的視圖中,您需要顯式使用RequestContext要查看其工作原理,並閱讀更多詳細信息,請查看Subclassing Context:RequestContext。

您需要將“django.core.context_processors.static”添加到settings.py中的TEMPLATE_CONTEXT_PROCESSORS變量中。

您需要將'django.core.context_processors.request'添加到TEMPLATE_CONTEXT_PROCESSORS。

您可以通過傳遞將STATIC_URL添加到模板渲染中

{'STATIC_URL': settings.STATIC_URL} 

或者你可以添加靜態上下文處理器,參見doc

暫無
暫無

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

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