Django表单处理
表单提交数据
终端
from car_no.views import CarRecorsform
f = CarRecordForm()
f.as_table() as_p()P标签 as_ul() 列表
f.is_valid() 查看输入是否有效 f.errors
auto_now 第一次插入数据时记录时间, 不会修改 auto_now_add 最后登录时间, 每次修改都会改
创建一个类 继承 forms.Form
重写属性
from django import forms class CarRecordForm(forms.Form): carno = forms.CharField(max_length=7, label='车牌号码', error_messages={}) # label 显示在标签中的名字 case = forms.CharField(max_length=50, label='违章原因') punish = forms.CharField(max_length=50, require=False, label='处罚方式') def add(request): if request.method == 'GET': errors = [] f = CarRecordForm else: f = CarRecordForm(request.POST) if f.is_valid(): a = f.cleaned_data Car(**a).save() f.CarRecordForm() else: errors = f.errors.values() return render(request, 'add.html', comtext={'f': f, 'errors': errors})
Django表单处理
表单提交数据
终端
from car_no.views import CarRecorsform
f = CarRecordForm()
f.as_table() as_p()P标签 as_ul() 列表
f.is_valid() 查看输入是否有效 f.errors
auto_now 第一次插入数据时记录时间, 不会修改 auto_now_add 最后登录时间, 每次修改都会改
创建一个类 继承 forms.Form
重写属性
from django import forms class CarRecordForm(forms.Form): carno = forms.CharField(max_length=7, label='车牌号码', error_messages={}) # label 显示在标签中的名字 case = forms.CharField(max_length=50, label='违章原因') punish = forms.CharField(max_length=50, require=False, label='处罚方式') def add(request): if request.method == 'GET': errors = [] f = CarRecordForm else: f = CarRecordForm(request.POST) if f.is_valid(): a = f.cleaned_data Car(**a).save() f.CarRecordForm() else: errors = f.errors.values() return render(request, 'add.html', comtext={'f': f, 'errors': errors})
views.py
from json import dumps, JSONEncoder from django.core.serializers.json import DjangoJSONEncoder from django import forms from django.http import HttpResponse, JsonResponse from django.shortcuts import render # Create your views here. from car_no.models import Car class CarRecordForm(forms.Form): carno = forms.CharField(max_length=7 ,label='车牌号', error_messages={}) case = forms.CharField(max_length=50, label='违章原因') punish = forms.CharField(max_length=50, required=False, label='处罚方式') # 可以不填 def add(request): if request.method == 'GET': errors = [] f = CarRecordForm() else: f = CarRecordForm(request.POST) if f.is_valid(): a = f.cleaned_data # 获得输入的纯数据, 字典样式 Car(**a).save() f = CarRecordForm() else: errors = f.errors.values() # 所有的错误信息 return render(request, 'add.html', context={'f': f, 'errors': errors}) class CarRecordEncoder(DjangoJSONEncoder): # DjangoJSONEncoder # pass def default(self, o): print('=='*20, o.model) a = o.model.__dict__ print('======>>>>>',a) del a['_state'] # 转化为字典 # o.__dict__['cardate'] = o.happen_date return a def ajax_search(request): if request.method == "GET": return render(request, 'ajax_search.html') else: carno = request.POST['carno'] record_list = Car.objects.all() # 第一个参数是要转换成JSON格式(序列化)的对象 #encoder 参数是指定自定义对象序列化的编码器 (JS # ONEncoder的子类型) # safe 的值如果为True 那么传入的第一个参数只能是字典, False 传入的不需要必须是字典, 但是要自定义序列化, 指定encoder #JsonResponse 如果传入的是字典, 就不需要其他的参数, 可以直接完成JSON格式的字符字符串的处理 return JsonResponse(record_list,encoder=CarRecordEncoder ,safe=False) # return HttpResponse(json.dumps(record_list), content_type='application/json; charset=utf-8') def search(request): if request.method == 'GET': ctx = {'show_result': False} else: carno = request.POST['carno'] ctx = {'show_result': True, 'record_list': list(Car.objects.filter(carno__contains=carno))} # contians 模糊查询 return render(request, 'search.html', context=ctx) def car(request): ctx={'car_list': Car.objects.all()} return render(request, 'car.html', context=ctx) def query(request): ctx = {'car_list': Car.objects.all()} return render(request, 'query.html', context=ctx) def index(request): ctx = { 'query': '/car_no/query', 'car': '/car_no/car' } return render(request, 'index.html', context=ctx)