2015-01-15 59 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