【问题标题】:Can't reverse match url in Admin Changeform无法在 Admin Changeform 中反向匹配 url
【发布时间】:2012-04-09 09:22:21
【问题描述】:

我阅读了很多文档,尝试了所有方法,但仍然无法理解为什么我的模板返回 Reverse for '' with arguments '(1,)' 和关键字参数 '{}' not found 错误。请在此处查看错误转储:http://dpaste.com/721187/

我在 change_form.html 模板中使用的标签是 {% url pdfview 1 %}

FVatAdmin(admin.ModelAdmin) 类有 get_urls 方法,如下所示:

def get_urls(self):
    urls = super(FVatAdmin, self).get_urls()
    my_urls = patterns('',
       url(r'^view/(?P<id>\d+)', self.admin_site.admin_view(self.pdf_view), name="pdfview"),
       url(r'^js/calculate', self.admin_site.admin_view(self.calculate), name="calc"),
        )
    return my_urls + urls

上面定义的 url 和 pdfview 工作得很好,但有些不通过模板中的 {% url pdfview 1 %} 和视图中的 reverse('pdfview', args={1}) 或通过 shell 解析.

我只是不明白我做错了什么。我是 Django 的新手... H E L P :)

【问题讨论】:

    标签: django django-admin django-templates django-views


    【解决方案1】:

    将网址名称放在引号中。

    {% url "admin:pdfview" 1 %}
    

    更新:这仅适用于 Django 1.3/1.4 如果:

     {% load url from future %}
    

    被使用。

    【讨论】:

    • 他在询问有关反转管理员 URL 的问题 - 此响应对此无济于事。
    • 是的,应该是 admin:pdfview
    • 好吧,admin:pdfview 也不起作用,详情请参阅我对 vkryachko 答案的评论。
    • 通过回溯,看起来你确实在使用未来的 url 标签,你应该引用视图名称:{% url "admin:pdfview" 1 %}。我更新了答案
    • 很高兴它可以工作 :) 检查历史事故的发行说明url templatetag
    【解决方案2】:

    为了不与其他 url 冲突,Django 管理 url 被命名空间。

    尝试执行以下操作 {% url admin:pdfview 1 %}

    查看详情:

    https://docs.djangoproject.com/en/1.4/topics/http/urls/#topics-http-reversing-url-namespaces

    【讨论】:

    • 我也试过了,我收到 Could not parse the rest: ':pdfview' from 'admin:pdfview' 错误,tracback is here dpaste.com/721417 有问题这里。也许我应该在这里发布我的脚本的其他部分来找出问题所在?
    • 抱歉,我的回答有误,现在修正。 {% url admin:pdfview 1 %} 是正确的做法。
    猜你喜欢
    • 2021-11-15
    • 2020-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-21
    • 2016-06-01
    相关资源
    最近更新 更多