用户匹配查询不存在 - django
User matching query does not exist - django
我有一个显示用户及其关于的页面。其中,有一个 link 来更新他们的 about。但是当我打开 link 时,它显示了这个错误:
DoesNotExist at /profile/user/update_about/
User matching query does not exist.
并且回溯突出显示了这一行,它来自视图中的 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>[\w@%.]+)/$', 'user_related.views.profile', name='profile'),
url(r'(?P<user_name>[\w@%.]+)/update_about/$', 'user_related.views.update_about', name='update_about'),
这是什么原因造成的?非常感谢您的帮助。谢谢。
您忘记在正则表达式的第一个位置添加插入符号 (^
)。所以第一个正则表达式匹配 "update_about/" 部分 url.
固定代码:
url(r'^(?P<user_name>[\w@%.]+)/$', 'user_related.views.profile', name='profile'),
url(r'^(?P<user_name>[\w@%.]+)/update_about/$', 'user_related.views.update_about', name='update_about'),
我有一个显示用户及其关于的页面。其中,有一个 link 来更新他们的 about。但是当我打开 link 时,它显示了这个错误:
DoesNotExist at /profile/user/update_about/
User matching query does not exist.
并且回溯突出显示了这一行,它来自视图中的 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>[\w@%.]+)/$', 'user_related.views.profile', name='profile'),
url(r'(?P<user_name>[\w@%.]+)/update_about/$', 'user_related.views.update_about', name='update_about'),
这是什么原因造成的?非常感谢您的帮助。谢谢。
您忘记在正则表达式的第一个位置添加插入符号 (^
)。所以第一个正则表达式匹配 "update_about/" 部分 url.
固定代码:
url(r'^(?P<user_name>[\w@%.]+)/$', 'user_related.views.profile', name='profile'),
url(r'^(?P<user_name>[\w@%.]+)/update_about/$', 'user_related.views.update_about', name='update_about'),