我一直在尝试创建一个用户注册页面,并已经得到了表单本身和表单的呈现设置。我还得到了将用户输入保存为POST的表单,但是还不能将该信息发送到我创建的视图函数中,以将该信息保存到数据库中。
这是我的html/css模板表单:(userinfo.html
)
<div>
{% block content %}
<form action="register" method="post" name="Userinfo" id="Userinfo">
<label for="fname">First Name</label>
{% csrf_token %}
<input type="text" id="fname" name="firstname" placeholder="Your first name..">
<label for="lname">Last Name</label>
<input type="text" id="lname" name="lastname" placeholder="Your last name..">
<label for="DOB">Date Of Birth</label>
<input type="text" id="DOB" name="DOB" placeholder="The Date you were born">
<label for="Email">Email Address</label>
<input type="text" id="Email" name="Email" placeholder="Your email address">
<input type="submit" value="Submit">
</form>
{% endblock %}
</div>
字符串
我的视图函数的名称是register
,它是:(views.py
)
def register(request):
if request.method == 'POST':
first_name = request.POST['first_name'],
last_name = request.POST['last_name'],
date_of_birth = request.POST['DOB'],
email = request.POST['email']
newuser= User.objects.create_user(first_name=first_name,last_name=last_name, email=email)
newuser.save()
print('user created')
return redirect('/home')
else:
return render(request,'register.html')
型
这是为了将用户输入保存到Django的用户数据库表中。
如何将表单链接到已设置的视图?
3条答案
按热度按时间bakd9h0s1#
假设注册视图的名称也是register,即,
字符串
然后你可以改变表单标签如下:
型
注意
first_name
和last_name
的输入名称的变化,以便匹配您的请求。POST['first_name']和request.POST['last_name']{% url 'register' %}
告诉Django查找一个包含名称为register的视图的url路径。6ljaweal2#
注意,从
form
得到的firstname
与在views
中查找的first_name
不同。您必须获取与放入html
中完全相同的数据。你总是可以字符串
看看
POST
字典有什么:)有了这个固定它应该工作了。
qcbq4gxm3#
我找到答案使用**(request.POST.get)**或(request.POST.items()}
如果打印它,它将返回一个包含表单中所有输入qureydict,因此应该将其转换为常规dic:
字符串
在此之前,您还应该在模板中命名所有输入:
型
因此“firsname”将是您字典中的关键字,您的DIC结果将是:{“firstname”:“input-name”,“lastname”:“input-lname”,“age”:“20”}
你也可以使用
型
要以这种方式从str类型的表单中获取单个输入,您应该命名您的in input:
型
抱歉英语不好