[英]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.