• 16.Django提交表单


    Django表单提交一共有三种方式:

    1.不使用Django组件进行提交

    2.使用django.forms.Form(所有表单类的父类)进行提交

    3.使用django.forms.ModelForm(可以和模型绑定的Form)进行提交

    这里的例子是,给Publisher这个表里添加数据,表结构如下:

    class Publisher(models.Model):
    name = models.CharField("名称",max_length=30)
    address = models.CharField("地址", max_length=50)
    city = models.CharField("城市", max_length=60)
    state_province = models.CharField("省份", max_length=30)
    country = models.CharField("国家", max_length=50)
    website = models.URLField("网址")

    class Meta:
    verbose_name = '出版商'
    verbose_name_plural = verbose_name

    def __str__(self):
    return self.name

    urls.py里加入如下配置:

    url(r'^add_publisher/$', views.add_publisher, name='add_publisher'),

    一下代码着重介绍模版文件的编写和views.py文件的编写

    html文件:hello_djangohello emplatesadd_publisher.html

    views.py文件:hello_djangohelloviews.py

    1.不使用Django组件进行提交

    和普通的html提交没什么不同,后台views.py使用命令一个一个的接収参数,然后进行处理,需要自己进行数据校验,自己进行组装数据

    html文件:自己写form表单

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>添加出版社信息</title>
    </head>
    <body>
    <form action="{% url 'add_publisher' %}" method="post">
    {% csrf_token %}
    名称:<input name="name" type="text" /><br>
    地址:<input name="address" type="text" /><br>
    城市:<input name="city" type="text" /><br>
    省份:<input name="state_province" type="text" /><br>
    国家:<input name="country" type="text" /><br>
    网址:<input name="website" type="text" /><br>
    <input type="submit" value="提交"><br>
    </form>
    </body>
    </html>

    views.py(自己接受数据,自己组装数据)

    def add_publisher(request):
    if request.method == "POST":
    name = request.POST['name']
    address = request.POST.get('address')
    city = request.POST['city']
    state_province = request.POST['state_province']
    country = request.POST['country']
    website = request.POST['website']
    Publisher.objects.create(
    name = name,
    address = address,
    city = city,
    state_province = state_province,
    country = country,
    website = website,
    )
    return HttpResponse("添加出版社信息成功!")
    else:
    return render(request, 'add_publisher.html', locals())

    2.使用django.forms.Form(所有表单类的父类)进行提交

    新建hello_djangohelloforms.py文件,参数是forms.Form标识他是一个Form的子类

    from django import forms

    class PublisherForm(forms.Form):
    name = forms.CharField(label="名称", error_messages={"required": "必填"})
    address = forms.CharField(label="地址", error_messages={"required": "必填"})
    city = forms.CharField(label="城市", error_messages={"required": "必填"})
    state_province = forms.CharField(label="省份", error_messages={"required": "必填"})
    country = forms.CharField(label="国家", error_messages={"required": "必填"})
    website = forms.URLField(label="网址", error_messages={"required": "必填"})

    html文件:这样不用自己写表单了

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>添加出版社信息</title>
    </head>
    <body>
    <form action="{% url 'add_publisher' %}" method="post">
    {% csrf_token %}
    {{ publisher_form.as_p }}
    <input type="submit" value="提交"><br>
    </form>
    </body>
    </html>

    views.py文件:不用一个一个接受参数,也不用自己做参数校验了

    def add_publisher(request):
    if request.method == "POST":
    publisher_form = PublisherForm(request.POST)
    if publisher_form.is_valid():
    Publisher.objects.create(
    name = publisher_form.cleaned_data['name'],
    address = publisher_form.cleaned_data['address'],
    city = publisher_form.cleaned_data['city'],
    state_province = publisher_form.cleaned_data['state_province'],
    country = publisher_form.cleaned_data['country'],
    website = publisher_form.cleaned_data['website'],
    )
    return HttpResponse("添加出版社信息成功!")
    else:
    publisher_form = PublisherForm()
    return render(request, 'add_publisher.html', locals())

    3.使用django.forms.ModelForm(可以和模型绑定的Form)进行提交

    新建hello_djangohelloforms.py文件,参数是forms.ModelForm标识他是一个ModelForm的子类

      from django import forms
      from hello.models import Publisher

      class PublisherForm(forms.ModelForm):
       class Meta:
       model = Publisher
       exclude = ("id",)


    views.py文件:不用一个一个接受参数,也不用自己做参数校验了,也不同自己创建对象
      def add_publisher(request):
      if request.method == "POST":
      publisher_form = PublisherForm(request.POST)
      if publisher_form.is_valid():
       publisher_form.save()
      return HttpResponse("添加出版社信息成功!")
      else:
      publisher_form = PublisherForm()
      return render(request, 'add_publisher.html', locals())
    
    
    


  • 相关阅读:
    鹰牌陶瓷签约亿客CRM系统 建材行业进入CRM时代
    CRM成为大数据落地的关键
    客户流失了怎么办?
    亿客CRM研发公司简介
    CRM销售管理软件让销售管理成为企业的助力
    CRM帮助企业的营销管理
    浅析移动CRM的客户价值细分
    CRM规划和执行战略
    信息化的先锋CRM
    SaaS的应用将弱化大小企业间竞争差距
  • 原文地址:https://www.cnblogs.com/413xiaol/p/6507389.html
Copyright © 2020-2023  润新知