我正在学习django,同时创建用户。我在/users/signup/";"密码_ 1";,请帮我
views.py,最后定义的函数,位于passwords1。这是它指向错误的地方。
from django.shortcuts import render
from django.contrib.auth import authenticate, login, logout
from django.contrib.auth.models import User
from django.http import HttpResponseRedirect
from django.urls import reverse
# Create your views here.
def userslogin(request):
if request.method == "POST":
username = request.POST["username"]
password = request.POST["password"]
user = authenticate(request, username=username, password=password)
if user is not None:
login(request, user)
return HttpResponseRedirect(reverse("index"))
else:
return render(request, "users/login.html", {
"message": "Invalid credentials."
})
else:
return render(request, "users/login.html")
def userlogout(request):
logout(request)
return render(request, 'users/logout.html',{
"message": "Succesfully logged out."
})
def usersignup(request):
if request.method == "POST":
username = request.POST["username"]
email = request.POST["email"]
password_1 = request.POST["password_1"]
password_2 = request.POST["password_2"]
myuser = User.objects.create_superuser(username = username,password = password_1, email=email)
if myuser is not None:
myuser.save()
return HttpResponseRedirect(reverse("main"))
else:
return render(request, "users/login.html", {
"message": "Invalid credentials."
})
else:
return render(request, "users/signup.html")
urls.py这里没有错,但是,我仍然包含了这个文件
from django.urls import path, include
from . import views
import blog
urlpatterns = [
path("", blog.views.main, name="index"),
path('login/',views.userslogin, name = 'login'),
path('logout/',views.userlogout, name = 'logout'),
path('signup/',views.usersignup, name = 'signup'),
]
signup.html
{% extends 'users/layout.html' %}
{% block body %}
<h1>Physics Blog</h1>
{% if message %}
<div>{{ message }}</div>
{% endif %}
<form action= "{% url 'signup' %}" method="post">
{% csrf_token %}
<input type="text" placeholder="username" name = "username" id="username">
<input type="email" placeholder="email" name = "email" id="email">
<input type="password" placeholder="password 1">
<input type="password" placeholder="password 2">
<input type="submit">
</form>
{% endblock %}
您需要指定input
小部件的名称,以便request.POST[]
可以通过input
小部件名称捕获值。在输入小部件中添加name=password_1, name=password_2
<form action="{% url 'signup' %}" method="post">
{% csrf_token %}
<input type="text" placeholder="username" name = "username" id="username">
<input type="email" placeholder="email" name = "email" id="email">
<input type="password"name="password_1"placeholder="password 1">
<input type="password"name="password_2"placeholder="password 2">
<input type="submit">
</form>