繁体   English   中英

如何在Django 1.5中撤消自定义管理URL?

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM