Реверс для 'выхода из системы' не найден.'logout' не является допустимой функцией просмотра или именем шаблона - PullRequest
0 голосов
/ 02 июля 2019

Новичок в Django, и попытка научиться создавать страницу регистрации с помощью учебника.Получение этой проблемы, несмотря на то, что точно следуйте инструкцииВот мой HTML, просмотры и URL.

Код:

<body>
8       <header>
9         <h1>My Site</h1>
10        {% if user.is_authenticated %}
11          <a href="{% url 'logout' %}">logout</a>
12        {% else %}
13          <a href="{% url 'login' %}">login</a> / <a href="{% url 'signup' %}">signup</a>
14        {% endif %}
15        <hr>
16      </header>
17      <main>
18        {% block content %}
19        {% endblock %}
20      </main>
21    </body>

Views.py

from django.contrib.auth import login, authenticate
from django.shortcuts import render, redirect

from mysite.core.forms import SignUpForm

def signup(request):
    if request.method == 'POST':
        form = SignUpForm(request.POST)
        if form.is_valid():
            form.save()
            username = form.cleaned_data.get('username')
            raw_password = form.cleaned_data.get('password1')
            user = authenticate(username=username, password=raw_password)
            login(request, user)
            return redirect('home')
    else:
        form = SignUpForm()
    return render(request, 'signup.html', {'form': form})

urls.py

from django.contrib import admin
from django.urls import path, include
from django.conf.urls import url
from django.conf.urls import url
from mysite.core import views as core_views


urlpatterns = [
    path('polls/', include('polls.urls')),
    path('admin/', admin.site.urls),
    url(r'^signup/$', core_views.signup, name='signup'),
]

1 Ответ

0 голосов
/ 02 июля 2019

У вас нет URL и просмотров для выхода из системы.

вы можете установить URL для выхода из системы следующим образом:

path('logout/user/',views.logout_user,name='logout')

в представлениях

from django.contrib.auth import logout

def logout_user(request):
logout(request)
return redirect('redirect where you want')

Итакже в вашем шаблоне используйте request.user вместо user, например:

{% if request.user.is_authenticated %}
          <a href="{% url 'logout' %}">logout</a>
       {% else %}
         .................
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...