首页 > 解决方案 > 新用户无法创建帐户,登录和注册 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 %} 

标签: djangodjango-modelsdjango-formsdjango-viewsdjango-templates

解决方案


推荐阅读