2015-01-15 58 views
0

我有一個頁面,顯示用戶及其。在這方面,有一個鏈接可以更新他們的。但是,當我打開鏈接它表明我這個錯誤:用戶匹配查詢不存在 - django

DoesNotExist at /profile/user/update_about/ 

User matching query does not exist. 

而且回溯hightlights這條線,從profile方法的觀點:

13. user = User.objects.get(username=unquote(user_name)) 

但是不會發生此錯誤時我加載了profile方法。它僅在視圖中的update_profile方法中出現。

views.py

from django.shortcuts import render 
from django.http import HttpResponseRedirect 
from urllib import unquote 

from django.contrib.auth.models import User 

from models import About 
from forms import AboutForm 
# Create your views here. 


def profile(request, user_name): 
    user = User.objects.get(username=unquote(user_name)) 
    about = About.objects.get_or_create(user=user) 
    about = about[0] 

    return render(request, 'user_profile.html', { 
     'user':user, 
     'about_user':about 
    }) 

def update_about(request, user_name): 
    user = User.objects.get(username=unquote(user_name)) 
    if request.method == 'POST': 
     form = AboutForm(request.POST) 
     if form.is_valid(): 
      form.save() 
      return HttpResponseRedirect('/') 
    else: 
     about = About.objects.get(user=user) 
     form = AboutForm(initial={'dob':about.dob}) 
     return render(request, 'update_about.html',{ 
      'form':form 
     }) 

urls.py

urlpatterns = patterns('', 
    # Examples: 
    url(r'(?P<user_name>[\[email protected]%.]+)/$', 'user_related.views.profile', name='profile'), 
    url(r'(?P<user_name>[\[email protected]%.]+)/update_about/$', 'user_related.views.update_about', name='update_about'), 

是什麼原因造成的?您的幫助將非常感謝。謝謝。

+0

在URL'/資料/用戶/ update_about /',_user_是實際的用戶名? – Rohan

+0

@Rohan是的,它是。 – Kakar

+0

所以看起來你的數據庫中沒有用戶名爲「user」的用戶。 – Rohan

回答

1

您忘記在正則表達式的第一個位置添加脫字符號(^)。所以第一個正則表達式匹配url的「update_about /」部分。

固定碼:

url(r'^(?P<user_name>[\[email protected]%.]+)/$', 'user_related.views.profile', name='profile'), 
url(r'^(?P<user_name>[\[email protected]%.]+)/update_about/$', 'user_related.views.update_about', name='update_about'), 
+0

這不是路由問題,因爲找到了視圖。 user_name參數有問題。 – nima

+0

@nima是的,它是。發現錯誤的*視圖。 –

+0

哦!現在我明白了,對不起。 – nima