2014-07-17 51 views
0

我是新Django和使用URL玩耍,停留在這個問題上, 我有我的views.py其中一個視圖反向鏈接到不同的視圖NoReverseMatch異常命名組網址

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塊,因爲usernameNone,所以這裏是我的URLconf

urlpatterns = patterns('', 
    url(r'(?P<username>^)', views.profile, name = "profile_page"),) 

所以在簡單的話,我呼籲這是使用一個命名參數用戶N profile_page網址AME和我傳遞相同的從kwargs,但我正在逐漸NoReverseMatch與異常消息:

反向關於「profile_page」與參數「()」和關鍵字參數「{」的用戶名「:‘dheerendra’}」未找到。 1個圖案(多個)嘗試:[ '用戶/(P ^)']

回答

0

爲了構建profile_page URL,它需要一個username是完全填寫。您在呼叫reverse('profile_page')而不通過kwargs用戶名。

0

兩件事情:

  • 你給的URL命名組username但你沒有真正給出了命名組正則表達式。您希望您的username正則表達式匹配不同長度的用戶名,所以你需要:

    url(r'?P<username>\w+)/$', views.profile, name="profile_page"),

    其中\w+是正則表達式

  • 其次,你會從上面的examlpe看,你需要使用$終止正則表達式,以便諸如/myusername/otherstring/之類的網址不會錯誤匹配