博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用ModelForm表单验证
阅读量:5943 次
发布时间:2019-06-19

本文共 2203 字,大约阅读时间需要 7 分钟。

1.定义model.py

  model中定义的字段类型,只有在通过form进行验证的时候才有效,数据库中的字段类型与其并不完全一致,如数据库中并没有ipaddress类型。如果不通过form对字段进行验证,则用户可以在前端输入任何类型数据而不会出错。

from django.db import modelsclass hv(models.Model):    name=models.CharField(max_length=100,unique=True,primary_key=True)    ip=models.GenericIPAddressField()    def __str__(self):        return self.name

2.定义froms.py

ModelForm将model和前台form连接到了一起

forms.Form并未连接后端的model,只是用来对前台输入进行判断其是否合法

from django import formsfrom django.forms import ModelFormfrom aptest.models import hv,vm,test #导入需要使用的modelclass hvform(ModelForm):    class Meta:        model = hv        fields = ['name','ip']        #fields = '__all__'     #选择使用所有字段        #exclude = ['title']    #不适用某个字段
class vmform(ModelForm):    cpu=forms.CharField(max_length=5,error_messages={'required': 'Please enter your name'}) #重新对cpu字段进行格式限制,会覆盖Model中已定义的类型格式。自定义错误信息,需要知道具体错误的名称 如“requeired”这些名称可以在API 中找到         class Meta:        model = vm        fields = '__all__'

 

3.编辑views.py

def add(request):    if request.method == 'POST':        #print request.POST['hvname'],request.POST['hvip']        print request.method        form = hvform(request.POST)                if form.is_valid(): #判断输入数据是否合法            #print form            #print form.cleaned_data['name'],form.cleaned_data['ip']            fc = form.cleaned_data            print fc['name'],fc['ip']        else:            err.append(form.errors) #输出错误信息    else:        form = hvform()    context={
'hour_offset':hour_offset,'ls':ls,'err':err} return render(request,'aptest/form.html',context)

4.编辑模板form.html

   ADD   
{% csrf_token %}
{% if err %}

Please correct the error: {

{ err }} below.

{% endif %}

访问输出:

 

在模版中通过{

{form.as_table}} 方式显示form内容时,Django会自动的将外键字段转化成一个select的控件,并且通过下拉框来选择一个值,如下图:

context={
'err':err,'form':form}return render(request,'aptest/current_datetime.html',context)

 

转载于:https://www.cnblogs.com/dreamer-fish/p/5422015.html

你可能感兴趣的文章
[java]OutOfMemoryError 原因及解决办法
查看>>
Oracle调优总结
查看>>
Springboot - -web应用开发-Servlets, Filters, listeners
查看>>
正态分布
查看>>
[TFRecord文件格式]基本介绍
查看>>
SSM项目整合Quartz
查看>>
rabbitmq安装集群
查看>>
ZOJ2158,POJ1789
查看>>
[转]C#多线程学习(四) 多线程的自动管理(线程池)
查看>>
shell 脚本
查看>>
世界在音乐中得到了完整的再现和表达。
查看>>
数据分析推荐书籍
查看>>
平衡的括号
查看>>
iphone 使用popViewController如何避免内存泄露
查看>>
Redis和MySQL数据同步及Redis使用场景
查看>>
字符串最小编辑距离
查看>>
关于编程
查看>>
Oracle Database 快捷版 安装 连接
查看>>
java-数组排序--冒泡排序、鸡尾酒排序、地精排序
查看>>
bzoj3876
查看>>