Реверс для «регистр» не найден.'register' не является допустимой функцией просмотра или именем шаблона - PullRequest
0 голосов
/ 10 октября 2018

Я пытаюсь сделать простое приложение, использующее встроенную пользовательскую модель django.Я создал страницу регистрации, но когда я запускаю сервер, я получаю эту ошибку на странице индекса.Вот код, который я использую:

Registration.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 для метода 'register'

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>

Что может вызвать ошибку здесь?

1 Ответ

0 голосов
/ 10 октября 2018

Вы должны включить аргумент name в маршрут регистрации.

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

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

...