新用户无法创建帐户,登录和注册URL将重定向到同一页面Django
我正在尝试使用Django构建一个简单的身份验证系统。“帐户”上的登录和注册URL都将重定向到同一登录页面。当我以管理员身份登录后,我会被重定向到注册页面。在注册页面中,我无法注册新帐户。请告诉我我错过了什么 url.py-login新用户无法创建帐户,登录和注册URL将重定向到同一页面Django,django,django-models,django-forms,django-views,django-templates,Django,Django Models,Django Forms,Django Views,Django Templates,我正在尝试使用Django构建一个简单的身份验证系统。“帐户”上的登录和注册URL都将重定向到同一登录页面。当我以管理员身份登录后,我会被重定向到注册页面。在注册页面中,我无法注册新帐户。请告诉我我错过了什么 url.py-login from django.contrib import admin from django.urls import path,include urlpatterns = [ path('admin/', admin.site.urls), path
from django.contrib import admin
from django.urls import path,include
urlpatterns = [
path('admin/', admin.site.urls),
path('accounts/', include('accounts.urls'))
]
url.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"),
]
views.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})
index.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>
汽油泵管理系统
{%block content%}
用户身份验证
{%if user.u经过身份验证%}
{%else%}
{%endif%}
{%endblock%}
dashboard.html
{% extends 'index.html' %}
{% block content %}
<h1>Welcome to Petrol Pump Management Service, {{user.username}}</h1>
{% endblock %}
{%extends'index.html%}
{%block content%}
欢迎使用汽油泵管理服务,{{user.username}
{%endblock%}
register.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 %}
{%extends'index.html%}
{%block content%}
创建新帐户
{%csrf_令牌%}
{{form.as_p}}
登记
{%endblock%}
login.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 %}
{%extends'index.html%}
{%block content%}
系统登录
{%csrf_令牌%}
{{form.as_p}}
登录
{%endblock%}
您的注册视图正在重定向到登录URl,因为您正在使用所需的login\u
decorator。至于其他问题:您是否设置了LOGIN\u REDIRECT\u URL
设置,如果设置了,值是多少?您如何知道新帐户的注册不起作用,是否抛出了错误?看起来register视图应该可以工作,但我不确定。@DJRamones在settings.py中,我已经设置了LOGIN\u REDIRECT\u URL='/accounts/dashboard/'。当我以管理员身份登录Django administration时,在用户列表中看不到新注册的帐户。所有注册用户帐户都应该显示在那里,对吗?@DJRamones关于为什么我的注册url也被重定向到登录页面的任何建议?只需删除@Login\u required
行;你打算允许匿名用户注册,对吗?那么,当他们正要注册一个帐户时,你不应该要求他们登录。至于你的其他问题,当你以管理员身份登录时被重定向到注册页面,或者无法注册帐户,我运行了你的代码,但没有遇到这些问题。管理员可以很好地登录,用户是在注册时创建的。只是想一想,您是在使用Django的默认用户模型,还是在使用自定义模型?