zoukankan      html  css  js  c++  java
  • Python之路【第三十四篇】:django admin配置

    一 admin的配置

    django admin是django自带的一个后台app,提供了后台的管理功能。

    基础知识点:

    一  认识ModelAdmin

       管理界面的定制类,如需扩展特定的model界面需从该类继承

    二 注册medel类到admin的两种方式:

         1   使用register的方法

         2   使用register的装饰器

    三 掌握一些常用的设置技巧

        list_display:  指定要显示的字段

        search_fields:指定搜索的字段

        list_filter: 指定列表过滤器

        ordering:指定排序字段

        

    三 Form

    一 什么是Form?什么是DjangoForm?

    Django表单系统中,所有的表单类都作为django.forms.Form的子类创建,包括ModelForm

    关于django的表单系统,主要分两种

    基于django.forms.Form:所有表单类的父类

    基于django.forms.ModelForm:可以和模型类绑定的Form

    实例:实现添加出版社信息的功能

    二 不使用Django Form的情况

        

    三  使用Form的情况

        首先,在app01中建立forms.py

    ######################################################### 
    
    
    #app01下新建的forms.py
    from django import forms
    
    class Mypub_form(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':'必填'})
    #######################################################
    #app01.views
    def add_publisher(req):
        if req.method=='POST':
            # #不使用django form
            # print(req.POST)
            # name=req.POST['name']
            # address=req.POST.get('address')
            # city=req.POST['city']
            # province=req.POST['province']
            # country=req.POST['country']
            # website=req.POST['website']
            # Publisher.objects.create(
            #     name=name,
            #     city=city,
            #     address=address,
            #     state_province=province,
            #     country=country,
            #     website=website
            # )
            # return HttpResponse("添加出版社信息成功!")
    
            #使用django form的情况
    
            Mypub_form_obj=Mypub_form(req.POST)
            if Mypub_form_obj.is_valid():
                Publisher.objects.create(
                    name=Mypub_form_obj.cleaned_data["name"],
                    address=Mypub_form_obj.cleaned_data["address"],
                    city=Mypub_form_obj.cleaned_data["city"],
                    state_province=Mypub_form_obj.cleaned_data["state_province"],
                    country=Mypub_form_obj.cleaned_data["country"],
                    website=Mypub_form_obj.cleaned_data["website"],
                )
    
                return HttpResponse("添加出版社信息成功!")
        else:
            Mypub_form_obj=Mypub_form()
        return render(req,'add_publisher.html',locals())
    #######################################################
    #add_publisher.html
    <body>
         <form action="{% url 'add_pub' %}" method="post">
             {% csrf_token %}
    {#           名称:<input type="text" name="name"><br>#}
    {#           地址:<input type="text" name="address"><br>#}
    {#           城市:<input type="text" name="city"><br>#}
    {#           省份:<input type="text" name="province"><br>#}
    {#           国家:<input type="text" name="country"><br>#}
    {#           网址:<input type="text" name="website"><br>#}
    {#           <input type="submit" value="提交"><br>#}
    
    
             {{ Mypub_form_obj.as_p }}
             <input type="submit" value="提交"><br>
         </form>
    </body>

    四 使用ModelForm的情况

    #######################################################
    #app01.views
    def add_publisher(req):
        if req.method=='POST':
            # #不使用django form
            # print(req.POST)
            # name=req.POST['name']
            # address=req.POST.get('address')
            # city=req.POST['city']
            # province=req.POST['province']
            # country=req.POST['country']
            # website=req.POST['website']
            # Publisher.objects.create(
            #     name=name,
            #     city=city,
            #     address=address,
            #     state_province=province,
            #     country=country,
            #     website=website
            # )
            # return HttpResponse("添加出版社信息成功!")
    
            #使用django form的情况
    
            Mypub_form_obj=Mypub_form(req.POST)
            if Mypub_form_obj.is_valid():
                # Publisher.objects.create(
                #     name=Mypub_form_obj.cleaned_data["name"],
                #     address=Mypub_form_obj.cleaned_data["address"],
                #     city=Mypub_form_obj.cleaned_data["city"],
                #     state_province=Mypub_form_obj.cleaned_data["state_province"],
                #     country=Mypub_form_obj.cleaned_data["country"],
                #     website=Mypub_form_obj.cleaned_data["website"],
                # )
                Mypub_form_obj.save()
    
                return HttpResponse("添加出版社信息成功!")
        else:
            Mypub_form_obj=Mypub_form()
        return render(req,'add_publisher.html',locals())
    #######################################################
    #add_publisher.html
    <body>
         <form action="{% url 'add_pub' %}" method="post">
             {% csrf_token %}
    {#           名称:<input type="text" name="name"><br>#}
    {#           地址:<input type="text" name="address"><br>#}
    {#           城市:<input type="text" name="city"><br>#}
    {#           省份:<input type="text" name="province"><br>#}
    {#           国家:<input type="text" name="country"><br>#}
    {#           网址:<input type="text" name="website"><br>#}
    {#           <input type="submit" value="提交"><br>#}
    
    
             {{ Mypub_form_obj.as_p }}
             <input type="submit" value="提交"><br>
         </form>
    </body>

    思考:为什么有的显示汉子,有的显示英文

    总结:

        使用Django中Form可以大大简化代码,常用的表单功能特性都整合到了Form中,而ModelForm可以和Model进行绑定,更进一步简化操作。

  • 相关阅读:
    git线上操作
    IDEA快捷方式
    Java 四种线程池
    java 获取当前天之后或之前7天日期
    如何理解AWS 网络,如何创建一个多层安全网络架构
    申请 Let's Encrypt 通配符 HTTPS 证书
    GCE 部署 ELK 7.1可视化分析 nginx
    使用 bash 脚本把 AWS EC2 数据备份到 S3
    使用 bash 脚本把 GCE 的数据备份到 GCS
    nginx 配置 https 并强制跳转(lnmp一键安装包)
  • 原文地址:https://www.cnblogs.com/hackerer/p/12347946.html
Copyright © 2011-2022 走看看