簡體   English   中英

自定義django管理模板無法正常工作

[英]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的值:

  1. 在命令行,導航到項目的settings.py文件所在的目錄(對我來說這是R:\\jeffy\\programming\\sandbox\\python\\django\\tutorial\\mysite\\mysite\\
  2. 啟動交互式shell: python
  3. >>> import settings
  4. >>> 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.

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