我正在用一个华丽的前端开发简单的用户身份验证。它只有一个应用程序“帐户”。在应用程序下,我创建了一个“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'
编辑登录\u重定向\u URL='home' 登录到\u重定向\u URL='/' 应该行得通
相关问题 更多 >
编程相关推荐