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'),
]
您尚未在URL文件中添加注销URL,这似乎是由一个或多个模板中的URL标签指向的。为了使IT工作您要使用内置的Django身份验证,因此您将从django.contrib.auth导入注销,然后将注销URL添加到您的URLPATTERNS:
:from django.contrib.auth import logout #import inbuilt authentication for logging out
urlpatterns = [
#then add the url to your url patterns as below
path('logout', logout, name='logout'),
url(r'^signup/$', core_views.signup, name='signup'),
]
我遇到了一个类似的问题,这些步骤对我有用,希望它对您和其他人有用