从1.8升级到1.9 Django Admin get_urls无法正常工作

时间:2016-06-07 13:41:23

标签: django django-templates django-admin

我正在使用Django管理员,刚刚从1.8升级到1.9。在1.8中,我在change_form中添加了一个单击按钮,它使用get_urls覆盖将我带到另一个html模板。像这样:

def get_urls(self):
    urls = super(arunAdmin, self).get_urls()
    my_urls = patterns('',
        (r'(\d+)/tarrespgraph/$', self.admin_site.admin_view(self.tarrespgraph)),
        )
return my_urls + urls

根据我在网上看到的一些建议,我将其更改为:

def get_urls(self):
    urls = super(arunAdmin, self).get_urls()
    my_urls = [
        url(r'^tarrespgraph/$', self.admin_site.admin_view(self.tarrespgraph)),
    ]        
    return my_urls + urls

但是我收到了这个错误:

带有主键的NBI Graph对象' 132 / change / tarrespgraph'不存在。

Django发现自定义的change_form.html没有问题。我的自定义模板(tarrespgraph.html)与我自定义的change_form.html位于同一文件夹中。 Django在哪里寻找我的自定义模板?我应该移动tarrespgraph.html,还是更改对url的引用?在此先感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

您可能不应该从网址模式中删除(\d+)组。请尝试以下方法:

my_urls = [
    url(r'^(\d+)/tarrespgraph/$', self.admin_site.admin_view(self.tarrespgraph), name='tarrespgraph'),
]

请注意,我已添加了一个名称,以便我们稍后撤消该网址。

如果没有(\d+)组,则新的网址格式与网址不匹配,因此会由管理员更改视图处理,从而产生错误。

您还需要更改模板中的链接。在Django 1.9中,Django已将change附加到管理员更改网址(例如现在为/admin/app/model/132/change/而不是/admin/app/model/132/。这意味着您的相对链接'tarrespgraph/'现在指向{ {1}}代替/admin/app/model/132/change/tarrespgraph/。您可以将相对链接更改为/admin/app/model/132/tarrespgraph/。但是,使用../tarrespgraph/代码会更不脆弱:

url