zoukankan      html  css  js  c++  java
  • Django框架【form组件】

    from django.shortcuts import render,redirect
    
    # Create your views here.
    
    from .models import *
    
    from django import forms
    from django.forms import widgets
    
    
    
    from django.forms import ModelForm
    
    '''
    class BookForm(forms.Form):
            # 原生form
            email=forms.EmailField()
            title = forms.CharField(max_length=32,label="书籍名称")
            price = forms.DecimalField(max_digits=8, decimal_places=2,label="价格")  # 999999.99
            date = forms.DateField(label="日期",
                widget=widgets.TextInput(attrs={"type":"date"})
            )
            #gender=forms.ChoiceField(choices=((1,"男"),(2,"女"),(3,"其他")))
            #publish=forms.ChoiceField(choices=Publish.objects.all().values_list("pk","title"))
            publish=forms.ModelChoiceField(queryset=Publish.objects.all())  # select
            authors=forms.ModelMultipleChoiceField(queryset=Author.objects.all())  # select
    '''
    
    from django.forms import widgets as wid
    class BookForm(ModelForm):
        class Meta:
            model=Book
            fields="__all__"  # 部分字段写列表
            labels={"title":"书籍名称", "price":"价格"}  # 字典 指明字段
            
            # 设置样式
            widgets={
                "title":wid.TextInput(attrs={"class":"form-control"}),
                "price":wid.TextInput(attrs={"class":"form-control"}),
                "date":wid.TextInput(attrs={"class":"form-control","type":"date"}),
                "publish":wid.Select(attrs={"class":"form-control"}),
                "authors":wid.SelectMultiple(attrs={"class":"form-control"}),
            }
            # 错误信息
            error_messages={
                "title":{"required":"不能为空"}
            }
    
    
    def books(request):
        book_list=Book.objects.all()
        return render(request,"books.html",locals())
    
    
    def addbook(request):
        if request.method=="POST":
            #  添加操作 create
            form = BookForm(request.POST)
            if form.is_valid():
                # 直接保存数据 包括跨表操作都已完成
                form.save()    # form.model.objects.create(request.POST)
                return redirect("/books/")
            else:
                return render(request, "add.html", locals())
        form=BookForm()
        return render(request,"add.html",locals())
    
    
    def editbook(request,edit_book_id):
        edit_book = Book.objects.filter(pk=edit_book_id).first()
        if request.method=="POST":
            # 修改操作 对instance 这个对象进行update
            form = BookForm(request.POST,instance=edit_book)
            if form.is_valid():
                form.save()  # edit_book.update(request.POST)
                return redirect("/books/")
        
        
        # get 请求同样带着数据过去
        # 参数为 instance 对象
        form=BookForm(instance=edit_book)
        return render(request,"edit.html",locals())

    form.html

    <div class="col-md-4 col-md-offset-2">
            <form action="" method="post" novalidate>
                {% csrf_token %}
                {% for field in form %}
                    <div>
                        {{ field.label }}
                        {{ field }} <span class="has-error">{{ field.errors.0 }}</span>
                    </div>
                {% endfor %}
                <input type="submit" class="pull-right btn-success btn">
            </form>
        </div>
  • 相关阅读:
    go http的三种实现---2
    go http的三种实现---1
    go语言递归创建目录
    Golang中的正则表达式
    go语言strings包
    go语言获取字符串元素的个数
    VBA在Excel中的应用(三)
    ASP 转换HTML特殊字符
    ASP汉字转拼音函数的方法
    用ASP实现文件下载
  • 原文地址:https://www.cnblogs.com/tangkaishou/p/10225698.html
Copyright © 2011-2022 走看看