Django框架

form:https://www.cnblogs.com/zgf-666/p/9124214.html

widget:https://blog.csdn.net/djangor/article/details/28126511?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1

form的功能:
• 前端页面是form类的对象生成的                                      -->生成HTML标签功能
• 当用户名和密码输入为空或输错之后 页面都会提示        -->用户提交校验功能
• 当用户输错之后 再次输入 上次的内容还保留在input框   -->保留上次输入内容

钩子函数:对字段进行校验

clean_

要注意将所用到的变量返回,重写谁,return谁

# 重写全局的钩子函数,对确认密码做校验
    def clean(self):
        password = self.cleaned_data.get("password")
        re_password = self.cleaned_data.get("re_password")

        if re_password and re_password != password:
            self.add_error("re_password", ValidationError("两次密码不一致"))

        else:
            return self.cleaned_data

    # 重写username局部钩子
    def clean_username(self):
        username = self.cleaned_data.get("username")
        is_exist = models.UserInfo.objects.filter(username=username)
        if is_exist:
            self.add_error("username", ValidationError("该用户已经存在!"))
        else:
            return username

前端使用form组件(这里还不是很懂。回答:详见顶部form连接中的渲染标签部分,有三种方式渲染)

      {% for field in register_form_obj %}
          <div>
            <label for="{{ field.id_for_label }}">{{ field.label }}</label>
            {{ field }}
          </div>
      {% endfor %}
原文地址:https://www.cnblogs.com/JackShi/p/12713471.html