[英]Custom django admin templates not working
我一直在嘗試為Django工作的管理頁面獲取自定義模板,但一直沒有成功。 我已經閱讀了django文檔和幾個博客,它們解釋說這是一個簡單的步驟,我認為是這樣。
截至目前,管理頁面工作,但我自己重寫的CSS或模板不起作用。 我的設置如下
/project_folder/
manage.py
settings.py
urls.py
__init__.py
/app/
views.py
models.py
__init__.py
/templates/
/admin/
base_site.html
在urls.py我有
(r'^admin/', include(admin.site.urls)),
這是有效的,因為我無法登錄等。所以我假設/admin/base_site.html將覆蓋默認的一個,但它沒有做任何事情。
有誰知道這里發生了什么? 我從Django教程/指南中跟蹤它,然后進入一些博客,看看他們是否有答案,但他們都說了同樣的話。
編輯1:我的模板目錄設置正確。
TEMPLATE_DIRS = (
os.path.join(PROJECT_PATH, 'templates/'),
)
這是正常的,因為我讓我的網站的其余部分使用CSS等的媒體目錄。唯一看起來不“接受”模板的是管理部分。
好吧我修好了,這是一個愚蠢的錯誤,但我在過去2個小時里已經玩過這個了。 我必須在django.contrib.admin之前聲明我的應用程序。 它不會接受它。
還有一個人應該拒絕參加這項運動的錯誤。 演習說要改變這個......
<h1 id="site-name"><a href="{% url 'admin:index' %}"> {{ site_header|default:_('Django administration') }} </a></h1>
對...
<h1 id="site-name"><a href="{% url 'admin:index' %}">Polls Administration</a></h1>
有一種誘惑只能改變字符串常量,但這是不正確的。 即不要這樣做,它不會改變標題:
<h1 id="site-name"><a href="{% url 'admin:index' %}"> {{ site_header|default:_('Polls Administration') }} </a></h1>
這就是我犯的錯誤,我必須仔細檢查才能修復它。
在Django教程的第二部分中執行此步驟時,我無法識別管理模板。
這就是我解決它的方式:
使用本答案中的信息,我打印了TEMPLATE_DIRS
的值:
settings.py
文件所在的目錄(對我來說這是R:\\jeffy\\programming\\sandbox\\python\\django\\tutorial\\mysite\\mysite\\
) python
>>> import settings
>>> settings.TEMPLATE_DIRS
,輸出['R:\\\\jeffy\\\\programming\\\\sandbox\\\\python\\\\django\\\\tutorial\\\\mysite\\\\templates']
因此,這是此項目的模板目錄的預期位置。 admin目錄進入該目錄, base_site.html
文件進入該目錄。
其他的問題,我是 ,它的工作,但我只改變了<TITLE>
字段,所以我只是沒有注意到它。 (我以為我正在改變主標題。)
確保已將settings.py
中的TEMPLATE_DIRS
settings.py
為正確的文件夾!
我在瀏覽Django 1.6.5教程時遇到了同樣的問題( https://docs.djangoproject.com/en/1.8/intro/tutorial02/ ),但是沒有仔細閱讀就意識到這是一個錯誤。 你要做的教程就是把它放到你的settings.py中:
TEMPLATES = [
{
...
'DIRS': [os.path.join(BASE_DIR, 'templates')],
...
}
然后,我將模板文件夾放在應用程序下的管理網站上,就像你的例子:
/project_folder/
manage.py
settings.py
urls.py
__init__.py
/app/
views.py
models.py
__init__.py
/templates/
/admin/
base_site.html
有了這個原因,就像Daniel Roseman在其中一條評論中提到的問題類似,我的DIR
正在評估project_folder/templates
(正如我所說)。 然后我在教程中注意到它明確表示將templates/admin
文件夾放在項目級別,而不是應用程序級別:
在項目目錄中創建一個templates目錄(包含manage.py的目錄)。 模板可以存放在Django可以訪問的文件系統的任何位置。 (Django以您的服務器運行的任何用戶身份運行。)但是,將模板保留在項目中是一個很好的約定。
通過這樣做,我有以下結構:
/project_folder/
manage.py
settings.py
urls.py
__init__.py
/templates/
/admin/
base_site.html
/app/
views.py
models.py
__init__.py
有了這個,一切都按預期工作(我可以覆蓋管理頁面的默認django模板)。
雖然您應該能夠將模板放在任何地方並配置Django來查找它們,但將主管理模板放在項目級別似乎是有意義的,因為管理站點不是特定於應用程序的,但可用於整個項目。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.