注册页面-使用form模块搭建
基于Django的form模块,快速的搭建注册页面,每个限制条件,都放在form模块里面,不单独对每一项编写标签,使用模版的 for 循环来渲染。
- 首先设置form模块
在blogs模块下创建一个blogs_form.py文件
注意一点,需要引用django模块下的forms模块,还有widgets模块,widget是设置input的类型,比如TextInput文本框,PasswordInput密码框,EmailInput邮箱框等等,这些好处就不用对其做判断,是否符合邮箱的匹配条件,forms模块就帮忙做了。
attrs:添加input的属性和属性值,key-value 形式,我想在class添加form-control(Bootstrap的样式),使用 attrs={"class","form-control"}
1 from django import forms 2 from django.forms import widgets 3 4 class UserForm(forms.Form): 5 user = forms.CharField(max_length=32, 6 label="用户名", 7 widget=widgets.TextInput(attrs={"class": "form-control"})) 8 pwd = forms.CharField(max_length=32, 9 label="密码", 10 widget=widgets.PasswordInput(attrs={"class": "form-control"})) 11 re_pwd = forms.CharField(max_length=32, 12 label="确认密码", 13 widget=widgets.PasswordInput(attrs={"class": "form-control"})) 14 email = forms.EmailField(max_length=32, 15 label="邮箱", 16 widget=widgets.EmailInput(attrs={"class": "form-control"}))
- view视图添加注册
创建forms对象,直接返回。
记得引入刚刚写的UserForm到view中。
from .blog_form import UserForm
def register(request):
form = UserForm()
return render(request, "register.html", locals())
- urls路由中添加路径
添加路径,将url路径和view中的register函数,关联起来。
path("register/", views.register)
- 重头戏,写register.html
首先,使用Bootstrap将布局搭建好,把<form>标签中的位置空出来
记得在form标签中,写 csrf_token 解决跨站问题
循环 UserForm对象, 每次拿到一个filed对象
filed.name:对象的label名
filed.label:对象的label
filed: input标签
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link rel="stylesheet" href="/static/bootstrap/css/bootstrap.min.css">
<script src="/static/js/jquery-3.4.1.js" type="text/javascript"></script>
<style type="text/css">
</style>
</head>
<body>
<div class="container">
<div class="row">
<div class="col-md-6 col-lg-offset-3">
<h3>注册页面</h3>
<form>
{% csrf_token %}
{% for filed in form %}
<div class="form-group">
<label for="id_{{ filed.name }}">{{ filed.label }}</label>
{{ filed }}
</div>
{% endfor %}
</form>
</div>
</div>
</div>
<script type="text/javascript">
</script>
</body>
</html>

浙公网安备 33010602011771号