Python 当我有“URL重定向”时,如何禁用URL重定向;“下一步”;url?-德扬戈
我用Django创建了一个博客,每当用户登录时,URL就会重定向到主页并显示一条成功消息。不过,这很好,只要需要登录才能查看某个页面,Django就会重定向到该登录页面,并将“?next=”附加到URL的末尾以重定向回上一页。问题是,用户登录后,“下一个”URL不会执行,Django会重定向到主页并显示成功消息?有没有办法在有“下一个”URL时禁用此重定向 views.pyPython 当我有“URL重定向”时,如何禁用URL重定向;“下一步”;url?-德扬戈,python,django,django-views,django-templates,django-authentication,Python,Django,Django Views,Django Templates,Django Authentication,我用Django创建了一个博客,每当用户登录时,URL就会重定向到主页并显示一条成功消息。不过,这很好,只要需要登录才能查看某个页面,Django就会重定向到该登录页面,并将“?next=”附加到URL的末尾以重定向回上一页。问题是,用户登录后,“下一个”URL不会执行,Django会重定向到主页并显示成功消息?有没有办法在有“下一个”URL时禁用此重定向 views.py from django.urls import reverse from django.contrib import me
from django.urls import reverse
from django.contrib import messages
from django.shortcuts import render, redirect
from django.contrib.auth import login
from django.utils.safestring import mark_safe
from .forms import UserLoginForm
def login_view(request):
if request.method == 'POST':
form = UserLoginForm(data=request.POST)
if form.is_valid():
student = form.get_user()
login(request, user)
create_url = reverse('post-create')
messages.success(request, mark_safe(f'You are now logged in. Do you want to <a href="{ create_url }" class="link" title="Create a post">create a post</a>?'))
return redirect('home')
else:
form = UserLoginForm()
return render(request, 'users/login.html', {'form': form, 'title': 'Log in'})
从django.url反向导入
从django.contrib导入消息
从django.shortcuts导入渲染,重定向
从django.contrib.auth导入登录
从django.utils.safestring导入标记_safe
from.forms导入UserLoginForm
def登录_视图(请求):
如果request.method==“POST”:
form=UserLoginForm(data=request.POST)
如果form.is_有效():
student=form.get\u user()
登录(请求、用户)
create\u url=reverse('post-create')
messages.success(请求,标记为“安全”(f'您现在已登录。是否要?'))
返回重定向('home')
其他:
form=UserLoginForm()
返回呈现(请求'users/login.html',{'form':表单,'title':'login'})
您可以从请求中获取下一个url。获取,如果主页不存在,则默认为主页
return redirect(request.GET.get('next', 'home'))
这样,如果查询参数中有?next=…
,它将被用作重定向路径,如果没有,那么您将重定向到“home”
您是否选中了request.POST.get('next')
?