Django反向解析未找到带有'()'参数和'{}'关键字参数的内容。

11 浏览
0 Comments

Django反向解析未找到带有'()'参数和'{}'关键字参数的内容。

我有一个令人恼火的问题。\n我有一个像这样的URL模式:\n

# mproject/myapp.urls.py
url(r'^project/(?P\d+)/$','user_profile.views.EditProject',name='edit_project'),

\n在浏览器中它工作得很好,但是在测试中,当我在shell中进行以下操作时:\n

from django.test import Client
from django.core.urlresolvers import reverse
client= Client()
response = client.get(reverse('edit_project'), project_id=4)

\n我遇到了可怕的错误:\n

NoReverseMatch: 找不到参数为“()”和关键字参数为“{}”的'edit_project'的反向匹配。

\n我在这里漏掉了什么?

0
0 Comments

文章标题:Django反向解析问题的原因和解决方法

在使用Django生成激活链接并通过电子邮件发送时,我遇到了一个大问题。我认为从tests.py中进行测试应该是一样的。

正确的做法如下:

from django.test import Client
from django.core.urlresolvers import reverse
# app_name是定义URL的应用程序的名称
client = Client()
response = client.get(reverse('app_name:edit_project', project_id=4)) 

我尝试了上述代码,但没有成功。's'的答案是正确的。

我认为括号放错了位置:response = client.get(reverse('edit_project', project_id=4))

以上就是出现问题的原因以及解决方法。

0
0 Comments

(Django Reverse with arguments '()' and keyword arguments '{}' not found)这个问题的出现的原因是在使用Django的reverse函数时,没有正确地传递参数。解决方法是通过args参数或kwargs参数将参数传递给reverse函数。

如果想使用args参数,可以按照以下方式修改代码:

project_id = 4
reverse('edit_project', args=(project_id,))

也可以使用kwargs参数来传递参数:

project_id = 4
reverse('edit_project', kwargs={'project_id': project_id})

需要注意的是,传递的参数在反向解析之前需要先赋值。同时,确保使用正确的命名空间,这里是'edit_project'。

在Django的文档中可以找到这个问题的示例以及更多的说明。这种方法简洁明了,非常实用。

0
0 Comments

在使用Django的reverse函数时,如果没有指定必需的参数,就会出现(Django Reverse with arguments '()' and keyword arguments '{}' not found)这个错误。

解决方法是在reverse函数中指定必需的参数。例如,在给定的代码中,需要指定参数project_id,可以这样写:

reverse('edit_project', kwargs={'project_id':4})

在模板中使用reverse函数的方法也可以在Django的文档中找到。可以参考这个链接:docs

以上方法经过测试,是有效的解决方案。

0