zoukankan      html  css  js  c++  java
  • Django Forms实例

    # Django的Form主要具有一下几大功能:
    #
    #     生成HTML标签
    #     验证用户数据(显示错误信息)
    #     HTML Form提交保留上次提交数据
    #     初始化页面显示内容
    
    # forms组件生成HTML标签格式
    # class 表名Form(Form):
    #     字段名 = fields.字段类型(
    #         初始值,
    #         widgets=widgets.插件(attrs={html属性标签 字典格式})
    #     )

    1.urls.py

    url(r'^student', student),

    2.models.py

    from django.db import models
    
    # Create your models here.
    class Class(models.Model):
        title = models.CharField(max_length=32)
        teachers = models.ManyToManyField("Teacher")
    
        def __str__(self):
            return self.title
    
    
    class Teacher(models.Model):
        name = models.CharField(max_length=32)
    
        def __str__(self):
            return self.name
    
    
    class Student(models.Model):
        username = models.CharField(max_length=16,unique=True)
        age = models.IntegerField()
        gender = models.BooleanField()
        classes = models.ForeignKey("Class")
    
        def __str__(self):
            return self.username

    2.form.py

    from .models import Student, Class, Teacher
    # Create your froms here.
    from django.forms import Form
    from django.forms import widgets
    from django.forms import fields
    
    class StudentForm(Form):
        username = fields.CharField()(
         widget=widgets.TextInput(attrs={"style":"color:red;"},)
    ) age
    = fields.IntegerField() gender = fields.ChoiceField( choices=((1, ""), (0, ""),), initial=1, widget=widgets.Select ) classes = fields.IntegerField( initial=1, widget=widgets.Select() )     
      
      # 绑定动态数据
    def __init__(self, *args, **kwargs): super(StudentForm, self).__init__(*args, **kwargs) self.fields["classes"].widget.choices = Class.objects.all().values_list("id", "title")

    4.views.py

    from .forms import StudentForm
    from .models import Student,Class,Teacher
    def student(request):
        if request.method == "GET":
            obj = StudentForm()
            return render(request, "t1/student.html", locals())
        elif request.method == "POST":
            obj = StudentForm(request.POST)
            if obj.is_valid():
                try:
                    val = obj.clean()
                    print(val)
                    Student.objects.create(username=val["username"], age=val["age"], gender=val["gender"],
                                           classes_id=val["classes"])
                    return HttpResponse(val["username"] + "添加完成")
                except Exception as e:
                    return HttpResponse("数据错误,请重新输入")
    
            else:
                print(obj.clean())
                return HttpResponse("ERROR")
    
        else:
            return HttpResponse("error")

    5.student.html

    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <form action="/student/" method="POST" enctype="multipart/form-data">
        {% csrf_token %}
    
        <p>用户名:{{ obj.username }} {{ obj.username.errors }}</p>
        <p>年&nbsp;&nbsp;龄:{{ obj.age }}{{ obj.age.errors }}</p>
        <p>性&nbsp;&nbsp;别:{{ obj.gender }}</p>
        <p>班&nbsp;&nbsp;级:{{ obj.classes }}</p>
    
        <input type="submit"value="添加用户"/>
    </form>
    </body>
    </html>
  • 相关阅读:
    算法的时间复杂度与空间复杂度
    递归八皇后问题(回溯算法)
    vue之插件
    递归之打印、阶乘、九九乘法表、迷宫问题
    选择排序
    归并排序
    sql 字符保留汉字处理
    JAVA filter map groupingBy Collectors
    2021最新版IDEA激活
    WPF 程序退出,进程依然存在
  • 原文地址:https://www.cnblogs.com/icemonkey/p/10541986.html
Copyright © 2011-2022 走看看