簡體   English   中英

當我有“下一個”網址時,如何禁用網址重定向? - 姜戈

[英]How can I disable URL redirect when I have a "next" url? - Django

我用 Django 創建了一個博客,每當用戶登錄時,URL 都會重定向到主頁並顯示成功消息。 這很好,但是,每當需要登錄才能查看某個頁面時,Django 會重定向到登錄頁面並將“?next=”附加到 URL 的末尾以重定向回上一頁。 問題是用戶登錄后,沒有執行“next”URL,Django重定向到首頁並顯示成功信息? 有沒有辦法在有“下一個”URL 時禁用此重定向?

視圖.py

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'})

您可以從request.GET獲取next url,如果不存在,則默認為您的主頁

return redirect(request.GET.get('next', 'home'))

這樣,如果?next=...在查詢參數中,它將用作重定向路徑,如果不是,則您將重定向到'home'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM