首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

django - 如何在登录后重定向django.contrib.auth.views.login?

在 Django 中,您可以通过自定义一个登录视图并设置 next 参数来实现登录后的重定向。以下是一个示例:

  1. 首先,在您的应用的 views.py 文件中创建一个自定义登录视图:
代码语言:python
代码运行次数:0
复制
from django.contrib.auth import authenticate, login
from django.contrib.auth.forms import AuthenticationForm
from django.shortcuts import render, redirect
from django.urls import reverse

def custom_login(request):
    if request.method == 'POST':
        form = AuthenticationForm(request, data=request.POST)
        if form.is_valid():
            user = authenticate(request, username=form.cleaned_data.get('username'), password=form.cleaned_data.get('password'))
            if user is not None:
                login(request, user)
                return redirect(reverse('your_redirect_view_name'))
    else:
        form = AuthenticationForm()
    return render(request, 'your_login_template.html', {'form': form})

请确保将 your_redirect_view_name 替换为您希望在登录成功后重定向到的视图的名称,将 your_login_template.html 替换为您的登录模板文件名。

  1. 接下来,在您的 urls.py 文件中为自定义登录视图添加一个 URL 路由:
代码语言:python
代码运行次数:0
复制
from django.urls import path
from . import views

urlpatterns = [
    # ... 其他路由 ...
    path('login/', views.custom_login, name='login'),
]
  1. 最后,在您的登录模板中,确保表单包含一个隐藏的 next 字段,以便在登录后将用户重定向到所需的页面。例如,在 your_login_template.html 中:
代码语言:html
复制
<form method="post" action="{% url 'login' %}">
  {% csrf_token %}
  {{ form.as_p }}
 <input type="hidden" name="next" value="{{ next }}" />
 <button type="submit">Login</button>
</form>

现在,当用户成功登录后,他们将被重定向到您在自定义登录视图中指定的视图。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的视频

领券