我正在尝试编辑用户配置文件。用户在个人资料上编辑表单.html当他们提交表单时,他们应该被重定向回个人资料.html(同一页面)。即使我更改了LOGIN_REDIRECT_URL,我仍然重定向到帐户/登录(默认值)。
views.py
@login_required
def profile(request):
user = request.user
if request.method == "POST":
signupform = SignUpForm(data=request.POST, instance=request.user)
if signupform.is_valid():
signupform.save()
return HttpResponseRedirect(settings.LOGIN_REDIRECT_URL)
return render(request, 'profile.html', "context stuff here")
settings.py
LOGIN_REDIRECT_URL = '/profile'
urls.py
url(r'^profile/$', views.profile, name='profile')
如何成功重定向到个人资料.html?
尝试将 APPNAME 替换为应用的名称(与你在 settings.py
INSTALLED APPS
部分中声明的应用名称相同)
return HttpResponseRedirect(reverse('APPNAME:profile'))
不要忘记在页面顶部导入
from django.urls import reverse
@login_required
装饰器,但未登录。以便它将您重定向到登录页面。如果您登录,则重定向至/profile
。
这样做,
@login_required
#...
if signupform.is_valid():
signupform.save()
return redirect('profile') # or 'app_name:profile' if you have app_name before your urlpatterns.
您的login_required会将您重定向到设置。LOGIN_URL
因此,在您的设置中添加LOGIN_URL = '/login/'
如果用户登录,视图将完美运行。
除此之外,(模板级别)您还可以在 html 中检查身份验证,
{% if user.is_authenticated %}
#html
{% else %}
show something
{% endif %}