2012-04-07 134 views
22

我想爲沒有模型的管理面板創建自定義頁面。對於第一次我的index.html複製到項目文件夾:如何爲django管理員創建自定義頁面?

mysite/ 
    templates/ 
     admin/ 
      index.html 

然後添加到應用程序阻止我的代碼:

<div class="module"> 
    <table summary="{% blocktrans with name="preferences" %}Models available in the preferences application.{% endblocktrans %}"> 
     <caption><a href="preferences" class="section">{% blocktrans with name="preferences" %}Preferences{% endblocktrans %}</a></caption> 
      <tr> 
       <th scope="row"><a href="preferences">Preferences</a></th> 
       <td><a href="preferences" class="changelink">{% trans 'Change' %}</a></td> 
      </tr> 
    </table> 
</div> 

這工作好,然後創建新頁面/模板/管理/首選項/喜好.html和 加入的urls.py:

url(r'^admin/preferences/$', TemplateView.as_view(template_name='admin/preferences/preferences.html')), 

並將代碼添加到preferences.html:

{% extends "admin/base_site.html" %} 
{% block title %}Test page{% endblock %} 

運行它並看到錯誤消息「請求的管理頁面不存在」。我做錯了什麼?

+0

你爲哪個'urls.py'添加了URL?這可能是Django管理員的一個更普遍的正則表達式捕獲'/ admin/preferences',所以它永遠不會到達你的URL正則表達式。 – 2012-04-07 11:21:16

+0

我在/mysite/mysite/urls.py中只有一個urls.py,我認爲這不是URL錯誤,因爲我沒有錯誤的網址模式。 – Gr1N 2012-04-07 11:27:05

+0

如果是這種情況,您將不會收到錯誤消息。您是否嘗試將網址更改爲其他內容以查看您是否在該情況下獲取管理頁面?例如,'^ testadmin/preferences/$'? – 2012-04-07 11:30:46

回答

21

您需要管理員自身的URL模式,以增加你的管理URL

urlpatterns = patterns('', 
    url(r'^admin/preferences/$', TemplateView.as_view(template_name='admin/preferences/preferences.html')), 
    url(r'^admin/', include('django.contrib.admin.urls')), 
) 

這樣的網址將不被Django的管理進行處理。

+2

頁面是受保護的還是對公衆開放? – 2016-11-05 08:11:34

12

您應該使用管理員的get_urls

+3

'get_urls'是'ModelAdmin'的一種方法,它反過來需要一個'Model',但是OP特別想要「爲沒有模型**的管理面板**創建自定義頁面」。 (強調添加。) – Louis 2015-01-23 13:05:03