首页 文章

Django反向使用参数'()'和关键字参数'{}'未找到

提问于
浏览
97

嗨,我有一个令人愤怒的问题 .

我有这样的网址模式:

# mproject/myapp.urls.py

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

它在浏览器中工作正常但是为了测试,当我在shell中执行此操作时:

from django.test import Client
from django.core.urlresolvers import reverse

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

我觉得很可怕:

NoReverseMatch: Reverse for 'edit_project' with arguments '()' and keyword arguments '{}' not found.

我在这里想念的是什么?

3 回答

  • 2

    您必须指定 project_id

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

    Doc here

  • 183

    当我试图使用反向生成激活链接并通过电子邮件发送时,这个问题让我非常头疼 . 所以我认为从tests.py它将是相同的 . 正确的方法是:

    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))
    
  • 0

    Resolve也更直截了当

    from django.urls import resolve
    
    resolve('edit_project', project_id=4)
    

    Documentation on this shortcut

相关问题