form表单,django的form表单,

django的表单系统,分2种,

基于django.forms.Form的所有表单类的父类,

基于django.forms.ModelForm,可以和模型类绑定的Form,

直接用原生的form表单,也可以直接用,较麻烦,

django的form表单,也可用可不要,

在views里创建一个类,继承了forms.Form ,每个字段就是一个输入框,

#-----
#django 的form表单

from django import forms

class MyForm(forms.Form):
    #forms对应的是前端的form表单,form 表单要验证的字段
    #都与校验有关系,与数据库没有关系

    #封装性强,可以 在前端指定显示那些字段,label 是显示指定的数据,
    user = forms.CharField(label="用户名")#输入的用户名,
    age = forms.IntegerField(label="年龄")
    email = forms.EmailField()

#form注册

def reg2(request):
    # 实列化出一个form对象,传到前端

    form_obj = MyForm()

    return render(request,"reg2.html",{"form_obj":form_obj})

在前端新建一个注册页面,前端渲染表单,是后端表单类实例出来的对象,用对象调用每个字段,

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

</head>
<body>

<h3>form表单使用</h3>
<form action="/reg2/" method="post">
{#    渲染从后端传来的变量,as_p 是段落#}
    {% csrf_token %}
{#    {{ form_obj.as_p }}#}
    <p>姓名{{ form_obj.user }}</p>
    <p>年龄{{ form_obj.age }}</p>
    <p>邮箱{{ form_obj.email }}</p>

</form>

</body>

</html>

可以从浏览器的检查元素中看到,浏览器自动添加了一些东西,

<body>

<h3>form表单使用</h3>
<form action="/reg2/" method="post">

    <input name="csrfmiddlewaretoken" value="GyY3KE5uM7HeErOEZ8OQFwUJYQYaknrOmavdmfufBuVOHdDSWfeHDyt2pjXarGAV" type="hidden">

    <p>姓名<input name="user" required="" id="id_user" type="text"></p>
    <p>年龄<input name="age" required="" id="id_age" type="number"></p>
    <p>邮箱<input name="email" required="" id="id_email" type="email"></p>

</form>

</body>

如果在前端页面随便输入就提交,前端会做校验,这都是浏览器做的校验,

可以自己定制,字段的错误信息提示,和显示信息,

#django 的form表单

from django import forms

class MyForm(forms.Form):
    #forms对应的是前端的form表单,form 表单要验证的字段
    #都与校验有关系,与数据库没有关系

    #封装性强,可以 在前端指定显示那些字段,label 是显示指定的数据,require 是必须填写的,
    user = forms.CharField(label="用户名",min_length=5,max_length=8)#输入的用户名,
    age = forms.IntegerField(label="年龄",error_messages={"required":"必填",})
    email = forms.EmailField()

#form注册

def reg2(request):

    errors_obj = " "
    if request.method == "POST":
        form_post = MyForm(request.POST)#拿到请求的所有数据
        if form_post.is_valid():#判断数据是否合法,返回布尔值,

            print("data",form_post.cleaned_data)#获取数据,得到一个字典格式,

        #添加数据库
        # User.objects.create_user()
    # 实列化出一个form对象,传到前端

        #如果是输入不合格式的信息,错误信息,
        else:
            #获取错误信息
            errors_obj = form_post.errors

            # print("error",form_post.errors["user"][0])
            # print("error",form_post.errors["age"])
            # print("error",type(form_post.errors))#字典类型,

    form_obj = MyForm()

    return render(request,"reg2.html",{"form_obj":form_obj,"errors_obj":errors_obj})

在前端页面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

</head>
<body>

<h3>form表单使用</h3>
<form action="/reg2/" method="post">
{#    渲染从后端传来的变量,as_p 是段落#}
    {% csrf_token %}
{#    {{ form_obj.as_p }}#}
    <p>姓名{{ form_obj.user }} <span>{{ errors.obj.user.0 }}</span> </p>
    <p>年龄{{ form_obj.age }}<span>{{ errors.obj.age.0 }}</span></p>
    <p>邮箱{{ form_obj.email }}<span>{{ errors.obj.email.0 }}</span></p>
    <input type="submit">

</form>

</body>

</html>
时间: 2024-10-14 02:50:59

form表单,django的form表单,的相关文章

【Python全栈-后端开发】Django进阶2-Form表单

Django进阶2-Form表单 Django的Form主要具有一下几大功能: 生成HTML标签(可以保留上次输入内容) 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 一.小试牛刀 1.创建Form类 在app01 文件夹下-->创建新的.py 文件 from django.forms import Form from django.forms import widgets from django.forms import fields class M

Django--分页器(paginator)、Django的用户认证、Django的FORM表单

分页器(paginator) >>> from django.core.paginator import Paginator >>> objects = ['john', 'paul', 'george', 'ringo'] >>> p = Paginator(objects, 2) >>> p.count #数据总数 4 >>> p.num_pages #总页数 2 >>> type(p.page

django 【form表单】

#########################根据类来生成表单################# ''' django form类 通模型类的属性映射到数据库的字段一样,表单类的字段会映射到HTML的<input>表单元素 ModelForm通过一个Form映射模型类的字段到HTML表单的<input>元素 Form表单功能 1.自动生成HTML表单元素 2.检查表单数据的合法性 3.如果验证错误,重新显示表单(数据不会重置) Form相关的对象 widget: 用来渲染成HT

Form表单和django的form表单的补充,

form 表单中的button按钮, <button>提交</button>  :放在form表单中,会有一个提交事件,会提交form数据, <input type="button" value="提交">  :是一个单纯的按钮,没有任何默认事件, 先匹配url和视图函数 from django.conf.urls import url from django.contrib import admin from app01 imp

django下Form表单的使用(一)

一.什么是Form?什么是Django Form?django表单系统中,所有的表单类都作为django.forms.Form的子类创建,包括ModelForm关于django的表单系统,主要分两种 基于django.forms.Form:所有表单类的父类基于django.forms.ModelForm:可以和模型类绑定的Form 实例:实现添加出版社信息的功能 二.不使用Django Form的情况(原生的写html实现表单提交) add_publisher.html<!DOCTYPE htm

Django使用普通表单、Form、以及modelForm操作数据库方式总结

Django使用普通表单.Form.以及modelForm操作数据库主要应用于增删该查的情景下,流程通用如下,只是实现方式不一样: 进入填写表单页面: 在表单页面填写信息,并提交: 表单数据验证 验证成功,和数据库进行交互(增删改查): 验证成功,页面提示表单填写失败: 一.Django使用普通表单操作数据库 1.html代码: <form action="/add/" method="post" name="addbook"> {%

【django之form表单】

一.构建一个表单 假设你想在你的网站上创建一个简单的表单,以获得用户的名字.你需要类似这样的模板: <form action="/your-name/" method="post"> <label for="your_name">Your name: </label> <input id="your_name" type="text" name="your

django,form表单,数据库增删改查

Django 02 复习:  Django下载:   在命令行输入:    pip3 install django==1.11.11    在这里不要用最新的3.7,推荐使用3.6/3.5/3.4    判断下载成功:     django-admin    创建django项目:     django-admin startproject 项目名     会创建跟项目同名的文件夹     settings.py 暴露给用户可配置的配置文件     urls.py     路由与视图函数对应文件

Django之form表单认证

Model常用操作: - 参数:filter 三种传参方式 - all(得到的是列表),values(字典),values_list(元祖) [obj(id,name,pwd,email),obj(id,name,pwd,email),] models.UserInfo.objects.all() #取到所有的值 [obj(id,name,email)] # pwd未取值 data_list = models.UserInfo.objects.all().only('name','email')