Django admin 中的 Django 附加视图 - URL 麻烦

Django additional views in Django admin - URL trouble

我正在向 django-admin 添加一个额外的视图。我的目我在创作。

我用它来开始,但我已经 运行 遇到问题,可能是因为我使用的 Django 版本。

http://patrick.arminio.info/additional-admin-views/

我遇到的问题是

TypeError at /admin/customers/order/1/review/
review() missing 1 required positional argument: 'id'

我不太确定如何解决这个问题。我的代码在这里:

class OrderAdmin(admin.ModelAdmin):
    review_template = 'review.html'

    def get_urls(self):
        urls = super(OrderAdmin, self).get_urls()
        review_urls = patterns('',
            (r'\d+/review/$', self.admin_site.admin_view(self.review)),
        )
        return review_urls + urls

    def review(self, request, id):
        order = Order.objects.get(pk=id)

        return render_to_response(self.review_template, {
            'title': 'Review order: %s' % order.id,
            'entry': order,
            'opts': self.model._meta,
            'root_path': self.admin_site.urls,
        }, context_instance=RequestContext(request))

我是 Django 的新手,最有用的信息在书中,而不是文档中,对于 Django 自称来说,文档太长了完美主义者的 Web 框架有截止日期。

您的 url 模式未捕获任何值,因此没有任何内容可传递给视图方法。您需要使用捕获括号:

 r'(\d+)/review/$', 

尽管通常您会使用命名组将值作为关键字参数发送:

r'(?P<id>\d+)/review/$',