Django:登录后无法重定向到主页

2024-04-20 13:15:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用一个华丽的前端开发简单的用户身份验证。它只有一个应用程序“帐户”。在应用程序下,我创建了一个“registerPage”视图,注册过程运行良好。但是对于登录,我使用的是来自django.contrib.auth的默认视图问题是,在发送电子邮件之后;登录密码应重定向至主页,但仍保留在同一登录页面中

帐户/视图:

from django.shortcuts import render, redirect
from django.contrib.auth.forms import UserCreationForm, AuthenticationForm
from django.contrib.auth import authenticate, login, logout
from django.contrib import messages
from django.contrib.auth.decorators import login_required
# views here...
from .models import *
from .forms import CreateUserForm


def registerPage(request):        
    if request.method == 'POST':
        form = CreateUserForm(request.POST)
        if form.is_valid():
            form.save()
            user = form.cleaned_data.get('username')
            messages.success(request, 'Account was created for ' + user)
            return redirect('login')
    else:
        form = CreateUserForm()
    context = {'form':form}
    return render(request, 'account/register.html', context)

def logoutPage(request):
    logout(request)
    return redirect('login')

@login_required
def homePage(request):
    context = {}
    return render(request, 'account/home.html', context)

帐户/url:

from django.urls import path
from . import views


urlpatterns = [
    path('', views.homePage, name="home"),
    path('register/', views.registerPage, name="register"),
    # path('login/', views.loginPage, name="login"),  
]

login.html:main body

<main class="login-body" data-vide-bg="{% static 'img/login-bg.mp4' %}">
        <!-- Login Admin -->
        <form class="form-signin" action="" method="POST">
            {% csrf_token %}
            <div class="login-form">
                <!-- logo-login -->
                <div class="logo-login">
                    <a href="{% url 'home' %}"><img src="{% static 'img/logo/loder.png' %}" alt=""></a>
                </div>
                {% for message in messages %}
                    <div class="alert alert-{{ message.tags }}">
                        {{ message }}
                    </div>
                {% endfor %}

                <h2>Login Here</h2>
                <div class="form-input">
                    <label for="name">Email</label>
                    <input  type="email" name="email" placeholder="Email">
                </div>
                <div class="form-input">
                    <label for="name">Password</label>
                    <input type="password" name="password" placeholder="Password">
                </div>

                <!-- {% if request.GET.next %}
                    <input type="hidden" name="next" value="{{ request.GET.next }}">
                {% endif %} -->
                <div class="form-input pt-30">
                    <input type="submit" name="submit" value="login">
                </div>

                Don't have an account ? <a href="{% url 'register' %}" class="register"> Sign-up </a>
            </div>
        </form>
        <!-- /end login form -->

    </main>

项目URL:

from django.contrib import admin
from django.urls import path, include
from django.contrib.auth import views as auth_views
from account import views as acc_views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('register/', acc_views.registerPage, name='register'),
    path('login/', auth_views.LoginView.as_view(template_name='account/login.html'), name='login'),
    path('logout/', auth_views.LogoutView.as_view(template_name='account/logout.html'), name='logout'),
    path('', include('account.urls')),
]

我还在settings.py文件中添加了这些路由:

LOGIN_REDIRECT_URL = 'home'

LOGIN_URL = 'login'

Tags: pathdjangonamefromimportdivformauth