使用 django中 forms模块处理表单

一 .forms 模块的作用:

通过 froms 模块,允许将表单与class相结合,可以自动生成表单控

二. 使用步骤:

1. 创建 froms.py

2.导入froms

from django import froms

3.创建class,一个class对应一个表单,必须继承自 forms.From 类

4、在class中创建属性

一个属性对应着一个表单控件

三. 在模板中解析 form 对象

1、注意:

         需要自定义<form>

         需要自定义 提交按钮

2、解析方式

         1、手动解析

在视图中创建 xxForm() 并发送到模板中

ex:

form = RemarkForm()

return render(request,'xx.html',locals())

手动解析:

模板中:

{% for field in form %}

{{field.label}} : 控件前的文本

{{field}} : 表示控件

{% endfor %}

          2、自动解析

1、{{form.as_p}}

将表单中的每个属性都解析成一个p标记,再显示标签以及控件

2、{{form.as_ul}}

将表单中的每个属性都解析成一个li标记,再显示标签以及控件

注意:需要自定义<ul></ul> 或 <ol></ol>

3、{{form.as_table}}

将表单中的每个属性都解析成一个tr标记,再显示标签以及控件

注意:需要自定义<table>

实例代码:

forms.py

from django import forms
from .models import *

# 为topic下拉列表初始化一组数据
TOPIC_CHOICE = (
    ('level1', '好评'),
    ('level2', '中评'),
    ('level3', '差评'),
)


class RemarkForm(forms.Form):
    # label 表示控件前面的文本
    # initia 表示初始化的数据 等同于控件的 value
    subject = forms.CharField(label='标题', initial='初始数据')
    # 创建email属性,表示邮箱显示email控件
    # label 表示控件前面的文本
    email = forms.EmailField(label='邮箱')
    # 创建message属性,表示评论的内容显示成多行文本域
    message = forms.CharField(label='内容', widget=forms.Textarea)
    # 创建 topic属性表示评论级别 ,显示成一个下拉列表
    # choices 指定下拉列表的数据们
    topic = forms.ChoiceField(label='评价', choices=TOPIC_CHOICE)
    # 创建isSave 属性 表示是否保存 显示成一个复选框
    isSave = forms.BooleanField(label='是否保存')
    upwd = forms.CharField(label='密码:', widget=forms.PasswordInput)


# 创建一个RegisterFrom类(方式一)
# class RegisterFrom(forms.Form):
#     uname = forms.CharField(label='注册用户名:', widget=forms.TextInput)
#     upwd = forms.CharField(label='密码:', widget=forms.PasswordInput)
#     uemail = forms.EmailField(label='邮箱:',widget=forms.EmailInput)
#     uage = forms.IntegerField(label='年龄')

# 表单的高级用法(方式二)
class RegisterFrom(forms.ModelForm):
    class Meta:
        model = RegisterUser
        fields = "__all__"  # __all__ 可以把models文件类中的属性的全部全部映射
# labels 中的键需要和models文件中对应类的属性名需要一致才可以映射出对应的值, 如果不一致 会映射出数据表的字段名,相当于models文件类的属性名
        labels = {
            'name': '用户名称',
            'password': '用户密码',
            'email': "用户邮箱",
            'age': '用户年龄',
            'isActive': '是否激活',

        }

models.py

# 注册用户表
class RegisterUser(models.Model):
    name = models.CharField(max_length=150)
    age = models.IntegerField(default=0)
    email = models.EmailField(default=True)
    password = models.CharField(max_length=30)
    isActive = models.BooleanField(default=True)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Django可以使用Django自带的模块(forms)来创建。使用Django模块可以简化的创建和验证,同时也可以提供更好的数据安全性。 下面是使用Django模块创建的步骤: 1. 创建一个forms.py文件,并导入forms模块: ``` from django import forms ``` 2. 创建一个类,并继承自forms.Form类: ``` class MyForm(forms.Form): field1 = forms.CharField(label='Field1', max_length=100) field2 = forms.EmailField(label='Field2') ``` 3. 在视图函数实例化类,并将其作为参数传递给模板: ``` from .forms import MyForm def my_view(request): form = MyForm() return render(request, 'my_template.html', {'form': form}) ``` 4. 在模板渲染: ``` <form method="POST" action=""> {% csrf_token %} {{ form.as_p }} <button type="submit">Submit</button> </form> ``` 注意:form.as_p会将渲染成一个p标签。 5. 在视图函数处理提交: ``` def my_view(request): if request.method == 'POST': form = MyForm(request.POST) if form.is_valid(): # 处理数据 field1 = form.cleaned_data['field1'] field2 = form.cleaned_data['field2'] # ... return redirect('success') else: form = MyForm() return render(request, 'my_template.html', {'form': form}) ``` 注意:使用form.is_valid()来验证是否有效,如果有效则可以使用form.cleaned_data来获取数据。 以上就是使用Django模块创建的基本步骤,更多详细信息可以查看Django官方文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值