首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >找不到具有参数'()‘和关键字参数'{}’的Django反向

找不到具有参数'()‘和关键字参数'{}’的Django反向
EN

Stack Overflow用户
提问于 2012-11-03 04:12:21
回答 4查看 129.8K关注 0票数 164

嗨,我有一个令人恼火的问题。

我有一个像这样的url模式:

代码语言:javascript
运行
复制
# mproject/myapp.urls.py

url(r'^project/(?P<project_id>\d+)/$','user_profile.views.EditProject',name='edit_project'),

它在浏览器中工作得很好,但为了测试,当我在shell中执行此操作时:

代码语言:javascript
运行
复制
from django.test import Client
from django.core.urlresolvers import reverse

client= Client()
response = client.get(reverse('edit_project'), project_id=4)

我得到了可怕的:

代码语言:javascript
运行
复制
NoReverseMatch: Reverse for 'edit_project' with arguments '()' and keyword arguments '{}' not found.

这里我漏掉了什么?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-11-03 04:16:05

您必须指定project_id

代码语言:javascript
运行
复制
reverse('edit_project', kwargs={'project_id':4})

文档here

票数 316
EN

Stack Overflow用户

发布于 2019-01-23 00:12:37

解决方案@miki725是绝对正确的。或者,如果您希望使用args属性而不是kwargs,则只需修改代码即可,如下所示:

代码语言:javascript
运行
复制
project_id = 4
reverse('edit_project', args=(project_id,))

这方面的一个例子可以在documentation中找到。这实际上做了同样的事情,但属性是作为参数传递的。请记住,传递的任何参数在被反转之前都需要赋值。只需使用正确的名称空间,在本例中为'edit_project'

票数 16
EN

Stack Overflow用户

发布于 2015-08-22 00:45:02

当我尝试使用反向生成激活链接并通过电子邮件发送时,这个问题让我非常头疼。所以我认为从tests.py来看也是一样的。正确的方法如下:

代码语言:javascript
运行
复制
from django.test import Client
from django.core.urlresolvers import reverse

#app name - name of the app where the url is defined
client= Client()
response = client.get(reverse('app_name:edit_project', project_id=4)) 
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13202385

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档