从普通 HTML 表单获取数据到 Django User 对象
Getting data from plain HTML form into Django User object
我已经创建了自己的纯 HTML 表单,我想将该数据放入视图中以创建默认的用户对象。
但是,我无法从表单中获取数据,这是我的看法:
def registerPage(request):
if request.method == "POST":
print(request.POST.get('name'))
print(request.POST.get('useremail'))
username = request.POST.get('name')
email = request.POST.get('useremail')
password = request.POST.get('userpassword')
user = User.objects.create_user(username, email, password)
return HttpResponse("Printed to the console")
else:
return render(request, 'store/register.html')
控制台打印“None”作为结果。
这 HTML :
<form class="mx-1 mx-md-4" method="POST" action="http://127.0.0.1:8000/register">
{% csrf_token %}
<div class="d-flex flex-row align-items-center mb-4">
<i class="fas fa-user fa-lg me-3 fa-fw"></i>
<div class="form-outline flex-fill mb-0">
<input type="text" id="name" class="form-control" />
<label class="form-label" for="name">Your Name</label>
</div>
</div>
<div class="d-flex flex-row align-items-center mb-4">
<i class="fas fa-envelope fa-lg me-3 fa-fw"></i>
<div class="form-outline flex-fill mb-0">
<input type="email" id="useremail" class="form-control" />
<label class="form-label" for="useremail">Your Email</label>
</div>
</div>
<div class="d-flex flex-row align-items-center mb-4">
<i class="fas fa-lock fa-lg me-3 fa-fw"></i>
<div class="form-outline flex-fill mb-0">
<input type="password" id="userpassword" class="form-control" />
<label class="form-label" for="userpassword">Password</label>
</div>
</div>
<div class="d-flex flex-row align-items-center mb-4">
<i class="fas fa-key fa-lg me-3 fa-fw"></i>
<div class="form-outline flex-fill mb-0">
<input type="password" id="form3Example4cd" class="form-control" />
<label class="form-label" for="form3Example4cd">Repeat your password</label>
</div>
</div>
<div class="d-flex justify-content-center mx-4 mb-3 mb-lg-4">
<button type="submit" class="btn btn-primary btn-lg">Register</button>
</div>
</form>
我应该如何获得这些值?或者至少打印出来?
当您使用 request.POST.get() 时,您必须使用输入名称而不是输入 ID 来识别输入。因此,您必须将标签“name”添加到您的输入中:
<input type="text" id="name" class="form-control" name="name"/>
<input type="email" id="useremail" class="form-control" name="useremail"/>
....
我已经创建了自己的纯 HTML 表单,我想将该数据放入视图中以创建默认的用户对象。
但是,我无法从表单中获取数据,这是我的看法:
def registerPage(request):
if request.method == "POST":
print(request.POST.get('name'))
print(request.POST.get('useremail'))
username = request.POST.get('name')
email = request.POST.get('useremail')
password = request.POST.get('userpassword')
user = User.objects.create_user(username, email, password)
return HttpResponse("Printed to the console")
else:
return render(request, 'store/register.html')
控制台打印“None”作为结果。
这 HTML :
<form class="mx-1 mx-md-4" method="POST" action="http://127.0.0.1:8000/register">
{% csrf_token %}
<div class="d-flex flex-row align-items-center mb-4">
<i class="fas fa-user fa-lg me-3 fa-fw"></i>
<div class="form-outline flex-fill mb-0">
<input type="text" id="name" class="form-control" />
<label class="form-label" for="name">Your Name</label>
</div>
</div>
<div class="d-flex flex-row align-items-center mb-4">
<i class="fas fa-envelope fa-lg me-3 fa-fw"></i>
<div class="form-outline flex-fill mb-0">
<input type="email" id="useremail" class="form-control" />
<label class="form-label" for="useremail">Your Email</label>
</div>
</div>
<div class="d-flex flex-row align-items-center mb-4">
<i class="fas fa-lock fa-lg me-3 fa-fw"></i>
<div class="form-outline flex-fill mb-0">
<input type="password" id="userpassword" class="form-control" />
<label class="form-label" for="userpassword">Password</label>
</div>
</div>
<div class="d-flex flex-row align-items-center mb-4">
<i class="fas fa-key fa-lg me-3 fa-fw"></i>
<div class="form-outline flex-fill mb-0">
<input type="password" id="form3Example4cd" class="form-control" />
<label class="form-label" for="form3Example4cd">Repeat your password</label>
</div>
</div>
<div class="d-flex justify-content-center mx-4 mb-3 mb-lg-4">
<button type="submit" class="btn btn-primary btn-lg">Register</button>
</div>
</form>
我应该如何获得这些值?或者至少打印出来?
当您使用 request.POST.get() 时,您必须使用输入名称而不是输入 ID 来识别输入。因此,您必须将标签“name”添加到您的输入中:
<input type="text" id="name" class="form-control" name="name"/>
<input type="email" id="useremail" class="form-control" name="useremail"/>
....