【问题标题】:Django additional views in Django admin - URL troubleDjango admin 中的 Django 附加视图 - URL 问题
【发布时间】:2016-12-11 03:48:27
【问题描述】:

我正在向django-admin 添加一个附加视图。我的目标是覆盖 change_form 以使字段只读并向其中添加一些自定义表单以使用 foreign_key 对象,并且还有一个编辑页面,这将是我正在创建的附加视图。

我用它来开始自己,但我已经遇到了一个问题,可能是因为我使用的 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 来说,自称是非常漫长的有期限的完美主义者的网络框架。

【问题讨论】:

    标签: python django django-admin django-urls django-1.9


    【解决方案1】:

    您的 url 模式没有捕获任何值,因此没有任何东西可以传递给 view 方法。您需要使用捕获括号:

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

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

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

    【讨论】:

      猜你喜欢
      • 2011-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-25
      • 2012-09-08
      • 2011-10-18
      • 1970-01-01
      • 2015-11-03
      相关资源
      最近更新 更多