簡體   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