我是django的新手并且正在玩网址并坚持这个问题,
我在我的views.py
中有一个视图,它反转了不同视图的网址
def index(request):
username = request.session.get('username')
if username is None:
return HttpResponseRedirect(reverse('login_page'))
#return HttpResponse("Testing view session not found")
else:
return HttpResponseRedirect(reverse('profile_page', kwargs = {'username': username,}))
#return HttpResponse("Testing view " + username)
现在,当else
不是username
时代码将到达None
阻止,所以这是我的URLconf
urlpatterns = patterns('',
url(r'(?P<username>^)', views.profile, name = "profile_page"),)
所以用简单的话说我正在调用profile_page
url,它使用的是命名参数用户名,我从kwargs
传递了相同的内容,但是我收到NoReverseMatch
的异常消息:< / p>
使用参数'()'和关键字参数'{'username':'dheerendra'}'找不到'profile_page'的反转。尝试了1种模式:['user /(?P ^)']
答案 0 :(得分:0)
要构建profile_page
网址,需要username
完全填写。你在没有在kwargs中传递用户名的情况下调用reverse('profile_page')
。
答案 1 :(得分:0)
两件事:
您已经为该网址指定了一个名为username
的网址,但您实际上并没有为该指定网址提供正则表达式。您希望username
正则表达式匹配不同长度的用户名,因此您需要:
url(r'?P<username>\w+)/$', views.profile, name="profile_page"),
其中\w+
是正则表达式
其次,正如您将从上面的检查中看到的那样,您需要使用$
终止正则表达式,以便/myusername/otherstring/
之类的网址不会错误地匹配< / p>