测试环境
在models写入
class User(models.Model):
name = models.CharField(max_length=12)
psw = models.CharField(max_length=12)
blank_true = models.CharField(max_length=12,blank=True)
null_true = models.CharField(max_length=12,null=True)
null_blank_true = models.CharField(max_length=12,blank=True,null=True)
views写下
from django.shortcuts import render,HttpResponse
from django.forms import Form
from django.forms import fields
from app01 import models
# Create your views here.
class UserForm(Form):
name = fields.CharField(
required=True,
max_length=12
)
psw = fields.CharField(
required=True,
max_length=12
)
blank_true = fields.CharField(
required=False,
max_length=12
)
null_true = fields.CharField(
required=False,
max_length=12
)
null_blank_true = fields.CharField(
required=False,
max_length=12
)
def test(request):
if request.method == 'GET':
userform = UserForm()
return render(request,"test.html",locals())
else:
userform = UserForm(data=request.POST)
if userform.is_valid():
models.User.objects.create(**userform.cleaned_data)
return HttpResponse('OK')
else:
return HttpResponse('NO')
def test1(request):
obj = models.User.objects.all().first()
print(type(obj.blank_true))
print(type(obj.null_true))
print(type(obj.null_blank_true))
return HttpResponse("blank_true:%s"%(type(obj.blank_true))+"null_true:%s" % type(obj.null_true)+"null_blank_true:%s"%type(obj.null_blank_true))
html文档
<form method="post" novalidate>
{% csrf_token %}
<p>名字:{{ userform.name }}</p>
<p>密码:{{ userform.psw }}</p>
<p>blank_true:{{ userform.blank_true }}</p>
<p>null_true:{{ userform.null_true }}</p>
<p>null_blank_true:{{ userform.null_blank_true }}</p>
<input type="submit">
</form>
在表单中blank_true,null_true,null_blank_true都默认都没有输入数据的情况下,打印出一下结果
blank_true <class 'str'>
null_true <class 'NoneType'>
null_blank_true <class 'NoneType'>

QQ截图20171109161456.png
总结
null
*如果为 True , Django 在数据库中会将空值(empty)存储为 NULL 。默认为False 。
blank
*设置字段是否可以为空,默认为False(不允许为空)
区别
和null的区别在于:null是数据库的范围,而blank是用于验证。如果一个字段的 blank=True ,Django 在进行表单数据验证时,会允许该字段是空值。如果字段的 blank=False ,该字段就是必填的。