Django表单提交数据




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)
  
  
  

猜你喜欢

转载自blog.csdn.net/zhang_Ming_lu/article/details/80897248