首页 > 解决方案 > 未找到“注册”的反向。“注册”不是有效的视图函数或模式名称

问题描述

我正在尝试制作一个使用 django 内置用户模型的简单应用程序。我已经创建了一个注册页面,但是当我运行服务器时,我在索引页面上收到了这个错误。这是我正在使用的代码:

注册.html

<!DOCTYPE html>

{% extends "basic/base.html" %}

{% block title_block %}
    <title>Registration</title>
{% endblock title_block %}

{% block body_block %}
    <div class="jumbotron">
        {% if registered %}
            <h1>Thank you for registering</h1>
        {% else %}
            <h1>Register here!</h1> 
            <h3>Fill out the form: </h3>

            <form enctype="multipart/form-data" method="post">
                {% csrf_token %}
                {{userForm.as_p}}
                {{profileForm.as_p}}
                <input type="submit" value="Register" name="">
            </form>
        {% endif %}
    </div>
{% endblock body_block %}

“注册”方法的 Views.py

def register(request):

    registered = False

    if(request.method == 'POST'):
        userForm = forms.UserForm(data=request.POST)
        profileForm = forms.UserProfileInfoForm(data=request.POST)

        if((userForm.is_valid()) and (profileForm.id_valid())):
            user = userForm.save()
            user.set_password(user.password)
            user.save()

            profile = profileForm.save(commit=False)
            profile.user = user

            if('profileImage' in request.FILES):
                profile.profileImage = request.FILES['profileImage']

            profile.save()

            registered = True

        else:
            print(userForm.errors, profileForm.errors)

    else:
        userForm = forms.UserForm()
        profileForm = forms.UserProfileInfoForm()

    return render(request, 'basic/registration.html', {'userForm':userForm, 'profileForm':profileForm, 'registered':registered})

这是项目的 urls.py

from django.contrib import admin
from django.urls import path, include
from basic import views

urlpatterns = [
    path('', views.index, name='index'),
    path('admin/', admin.site.urls),
    path('basic/', include('basic.urls', namespace='basic'))
]

这是基本应用程序的 urls.py

from django.urls import path
from . import views

app_name = 'basic'

urlpatterns = [
    path('register/', views.register)
]

以及 base.html 中页面的链接

<a class="nav-link" href="{% url 'basic:register' %}">Register</a>

什么会导致这里的错误?

标签: djangodjango-templatesdjango-views

解决方案


您必须name在注册路由中包含一个参数。

path('register/', views.register, name='register')

https://docs.djangoproject.com/en/2.1/topics/http/urls/#reverse-resolution-of-urls


推荐阅读