django - 新用户无法创建帐户,登录和注册 url 被重定向到同一页面 Django
问题描述
我正在尝试使用 Django 构建一个简单的身份验证系统。“帐户”上的登录和注册 url 都重定向到同一个登录页面。以管理员身份登录后,我被重定向到注册页面。在注册页面,我无法注册新帐户。请告诉我我错过了什么。
urls.py-登录
from django.contrib import admin
from django.urls import path,include
urlpatterns = [
path('admin/', admin.site.urls),
path('accounts/', include('accounts.urls'))
]
urls.py-accounts
from django.urls import path
from . import views
from django.contrib.auth.views import LoginView, LogoutView
urlpatterns = [
path('', views.indexView, name = "home"),
path('dashboard/', views.dashboardView, name = "dashboard"),
path('login/', LoginView.as_view(), name = "login_url"),
path('register/',views.registerView, name = "register_url"),
path('logout/', LogoutView.as_view(next_page='dashboard'), name = "logout"),
]
视图.py
from django.shortcuts import render, redirect
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.decorators import login_required
# Create your views here.
def indexView(request):
return render(request, 'index.html')
def dashboardView(request):
return render(request, 'dashboard.html')
@login_required
def registerView(request):
if request.method == "POST":
form = UserCreationForm(request.POST)
if form.is_valid():
form.save()
return redirect('login_url')
else:
form = UserCreationForm()
return render(request, 'registration/register.html', {'form':form})
索引.html
<!DOCTYPE html>
<html>
<head>
<title>Petrol Pump Management System</title>
</head>
<body>
{% block content %}
<h1>User Authentication</h1>
{% if user.is_authenticated %}
<a href="{% url 'logout' %}">Logout</a>
{% else %}
<a href="{% url 'login_url' %}">Login</a>
<a href="{% url 'register_url' %}">Register</a>
{% endif %}
{% endblock %}
</body>
</html>
仪表板.html
{% extends 'index.html' %}
{% block content %}
<h1>Welcome to Petrol Pump Management Service, {{user.username}}</h1>
{% endblock %}
注册.html
{% extends 'index.html'%}
{% block content %}
<h1>Create new account</h1>
<form method = "POST" novalidate>
{% csrf_token %}
{{form.as_p}}
<button type="submit">Register</button>
</form>
{% endblock %}
登录.html
{% extends 'index.html' %}
{% block content %}
<h1>System Login</h1>
<form method = "POST">
{% csrf_token %}
{{form.as_p}}
<button type="submit">Login</button>
</form>
{% endblock %}
解决方案
推荐阅读
- django - Django REST Framework BasicAuthentication 不用作默认身份验证类
- vba - 在vba中执行数字列表之间的交集
- vue.js - 为什么 Axios 在我的 POST 请求中发送额外的 204 预检请求?
- python - 存储要由函数调用的多组列表(相同名称 - 不同参数)的 Pythonic 方式
- html - 部分不从页面底部移动到顶部
- typescript - Jest config (TypeScript): 类型 '{ __PATH_PREFIX__: string; }' 不可分配给类型 'string | 细绳[]'
- arduino - 控制两个 LED 灯串时,ESP32 内核冻结
- arrays - VBA:通过范围与数组更改数据
- java - Mockito 在调用 doCallRealMethod 时抛出 NullpointerException
- javascript - React - 访问导出的常量