在 Django 中,您可以通过自定义一个登录视图并设置 next
参数来实现登录后的重定向。以下是一个示例:
views.py
文件中创建一个自定义登录视图: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
替换为您的登录模板文件名。
urls.py
文件中为自定义登录视图添加一个 URL 路由:from django.urls import path
from . import views
urlpatterns = [
# ... 其他路由 ...
path('login/', views.custom_login, name='login'),
]
next
字段,以便在登录后将用户重定向到所需的页面。例如,在 your_login_template.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>
现在,当用户成功登录后,他们将被重定向到您在自定义登录视图中指定的视图。