2012-04-07 137 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