【发布时间】:2015-11-01 04:25:29
【问题描述】:
用户登录我的应用后,我想将该人重定向到他们的个人资料。
但是,我不断收到此错误:
/app/url/username/处的类型错误
profile() 得到了一个意外的关键字参数“用户名”
这是模型:
class UserProfile(models.Model):
user = models.OneToOneField(User)
profile_picture = models.ImageField(upload_to='profile_images', blank = True)
def __str__(self):
return self.user.username
这是用户将登录的视图,然后将用户重定向到配置文件:
def user_login(request):
if request.method == 'POST':
username = request.POST.get('username')
password = request.POST.get('password')
user = authenticate(username=username, password=password)
if user:
if user.is_active:
login(request, user)
url = reverse('profile', kwargs={'username': username})
return redirect(url)
else:
return HttpResponse("Please login.")
else:
print("Invalid login details: {0}, {1}".format(username, password))
return HttpResponse("Invalid login details supplied.")
else:
return render(request, 'reviews/login.html', {})
这是用户个人资料的视图:
@login_required
def profile(request, user):
user = UserProfile.objects.get(user = request.user)
return render(request, 'reviews/profile.html', {'username':username})
这是网址格式:
url(r'^profile/(?P<username>\w+)/$', views.profile, name='profile')
谁能告诉我如何将登录的用户重定向到他们的个人资料?
尝试了目前建议的两种方法。我收到了他们两个的这个错误:
UserProfile 匹配查询不存在。
这是回溯:
Environment:
Request Method: GET
Request URL: http://localhost:8000/app/profile/username/
Django Version: 1.8.3
Python Version: 3.4.3
Installed Applications:
('grappelli',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'reviews',
'compressor',
'cloudinary')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.security.SecurityMiddleware')
Traceback:
File "/var/www/nurse/lib/python3.4/site- packages/django/core/handlers/base.py" in get_response
132. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/var/www/nurse/lib/python3.4/site- packages/django/contrib/auth/decorators.py" in _wrapped_view
22. return view_func(request, *args, **kwargs)
File "/var/www/nurse/nurseapp/reviews/views.py" in profile
165. user=UserProfile.objects.get(user = request.user)
File "/var/www/nurse/lib/python3.4/site-packages/django/db/models/manager.py" in manager_method 127. return getattr(self.get_queryset(), name)(*args, **kwargs)
File "/var/www/nurse/lib/python3.4/site-packages/django/db/models/query.py" in get 334. self.model._meta.object_name
Exception Type: DoesNotExist at /app/profile/username/
Exception Value: UserProfile matching query does not exist.
【问题讨论】:
标签: django redirect registration reverse profile