Django命名空间的URL和参数

时间:2015-09-23 11:10:23

标签: python django url

我在Django中遇到了一个奇怪的命名空间url问题,我在找到更简单的例子并使用

时找不到我做错了什么

基本上,我的项目由两个应用程序组成,用户和模型。在我的一般urls.py中,我定义了:

url(r'^model/', include('model.urls', namespace="model")),
url(r'^user/', include('user.urls', namespace="user")),

在user.urls.py文件中,我定义了以下网址:

url(r'^duo/(?P<pseudo>[a-z]+)/$',views.duo, name='duo'),

二人观点相当简单:

def duo(request,pseudo):
     print pseudo
     return render(request,"user/duo.html",locals())

因此,当我在我的模板中使用时:

{% url 'user:duo' lena %}

我希望将网址解析为/ user / duo / lena。相反,我得到了以下NoReverseMatch:

 Reverse for 'duo' with arguments '('',)' and keyword arguments '{}' not found. 1 pattern(s) tried: [u'user/duo/(?P<pseudo>[a-z]+)/$']

我接受任何猜测来解决我的错误!

2 个答案:

答案 0 :(得分:1)

好的,PynchiaBernhard条评论可以帮我修复错误!现在,我正在使用

"{% url 'user:duo' "lena" %}"

在我的模板中,它运行顺利!非常感谢你!

答案 1 :(得分:0)

根据讨论编辑: 你需要引用你的参数。关键字参数也可能使事情更清晰:

window.location.reload(true);

如果你没有引用该值,Django假设这是一个上下文变量,并且{% url 'user:duo' pseudo='lena' %} 不是你的情况下的上下文变量,它的计算结果为lena。该错误实际上告诉您,您没有为反向查找提供args或kwargs。