[英]How to reverse a custom admin url in Django 1.5?
我想為ModelAdmin添加自定義網址,但似乎Django在1.5中更改了模板語法。 正如文檔指出的那樣,我嘗試了這種方式,但是不幸的是它不起作用。
class VariableAdmin(admin.ModelAdmin):
def get_urls(self):
urls = super(VariableAdmin, self).get_urls()
my_urls = patterns('',
url(r'^settings/([A-Za-z0-9]*)', self.admin_site.admin_view(self.settings), name="settings"))
return my_urls + urls
def settings(self, request, category):
return render_to_response('variables.html', {"opts": Variable._meta}))
這是我的variables.html
{% load admin_urls %}
{% url opts|admin_urlname:'settings' %}
這段代碼拋出這樣的錯誤:
Reverse for 'common_variable_settings' with arguments '()' and keyword arguments '{}' not found.
我該如何解決這個問題?
嘗試更改視圖名稱以包括應用程序和模型名稱:
...
my_urls = patterns('', url(r'^settings/([A-Za-z0-9]*)',
self.admin_site.admin_view(self.settings),
name="common_variable_settings"))
...
admin_urlname
模板過濾器返回“完整”名稱,請參見其源代碼:
@register.filter
def admin_urlname(value, arg):
return 'admin:%s_%s_%s' % (value.app_label, value.module_name, arg)
因此,絕對需要將您的視圖命名為"appname_modulename_settings"
。 然后也許嘗試將正則表達式更改為如下所示:
r'^settings/([A-Za-z0-9]+/)?$'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.