将kwargs传递给Django URL和视图

时间:2017-06-09 21:09:23

标签: python django

我想通过网址将kwargs传递给我的查看功能。

urls.py

urlpatterns = [

# ------------- set relations --------------------
url(r'^approve-form/$', views.approve_form,
{'content_type':None, 'form_id':None,}, name='approve-form'),]

views.py

def approve_form(request, content_type=None, form_id=None): return HttpResponse('Working')

现在我使用reverse_lazy函数从模型实例

中调用url

models.py

class FormStatus(models.Model):
    content_type = models.ForeignKey(ContentType)
    form_id = models.IntegerField(verbose_name='Form Ref ID')


    def __str__(self):
        return "{}".format(self.content_type)


    def get_approve_link(self):
        return  reverse_lazy("flow-control:approve-form", kwargs={'form_id':self.form_id,
                                                              'content_type':self.content_type})'

错误

Reverse for 'approve-form' with arguments '()' and keyword arguments '{'content_type': <ContentType: admin sanc model>, 'form_id': 12}' not found. 1 pattern(s) tried: ['flow-control/approve-form/$']

这种方法有问题,还是有更好的方法?

提前致谢。

PS:我试过了url documentation,但无法理解。

1 个答案:

答案 0 :(得分:1)

将您的网址更改为并检查其是否有效 -

   urlpatterns = [

   # ------------- set relations --------------------
  url(r'^approve-form/(?P<content_type>\w+)/(?P<form_id>\d+)/$', views.approve_form, name='approve-form'),]

<强>视图

 def approve_form(request, content_type=None, form_id=None):
     return  HttpResponse('Working')