注册页面-使用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>

  

猜你喜欢

转载自www.cnblogs.com/yebax/p/11437729.html