Django基础(四)

模型

  1.字段和模型
    1.field Type
      1.BooleanField()
      2.EmailField() 存电子邮件-varchar
      3.ImageField() 存图片路径-varchar
      4.ImageField(upload_to = "static/**/**")
      5.IntergerField()
      6.URLField()
      7.TextField()#存大量文本数据的 -text
      8.DecimalField()
      9.CharField()
   
   2. field option(字段选项)
      1. max_length
          指定数据的最大长度
          在CharField()中必须要设置的选项

      2. default
          为当前字段指定默认值


      3. Null
          指定当前字段是否允许为空, 默认值是 false


   练习:完善FruitDay部分的models
       1. models 商品的类型,商品, 用户
       2.商品类型 GoodsType
            1. 类型名称-title
            2. 类型图片-picture
               默认上传至: static/upload/goodstype
            3. 类型描述-desc


       3.商品 Goods
             1.商品名称:name
             2.商品价格:price(DecimalField)
             3.商品规格:spec
             4.商品图片:picture
                默认上传至:static/upload/goods
             5.销售状态:isActive(默认为True)




      4.用户: User
           1.电话号码:uphone
           2.    密码:upwd
           3. 电子邮件:uemail
           4. 用户名: uname
           5. 用户状态:isActive 默认为True
           6. 


   3.数据的版本转换
      1.python3 manage.py migrate
        执行所有应用中最新版本的数据库中间文件


      2. ./manage.py migrate 应用名称 版本号
        执行应用中,版本号 对应的中间文件


   4.通过数据库自动导出Models
       python3 inspectdb > 文件名.py
       python3 inspectdb > 


3.模型中的CRUD
  1.通过ORM 向 DB 中增加数据
     1. Entry.objects.create(属性=值,属性=值)
        Entry:具体要操作的Model类



      ex:
        1. Author.objects.create(               name="张三丰",age=33)



        2. 创建一个Models对象, 通过对象的save()
            obj = Author(name="laoshe",age=33)
            obj.save()

        3.使用字典来构建对象,通过save()
          完成增加
            dic = {
              "属性1":值1,
              "属性2":值2,
              "属性3":值3,
            }
            obj = Entry(**dic)
            obj.save()
        练习:
          使用三种方式,分别想Publisher,Book 中
          各增加三条数据

  

2.查询操作(重难点) 

      1.通过Entry.objects 调用查询接口
      2.基本查询操作
         语法: all()
         用法: Entry.objects.all()
         返回: QuerySet

      3.查询指定列
         语法 values("列1","列2",..)
         用法: Entry.object.values('列1','列2',....)
         返回: QuerySet

    ex:
         Author.objects.values('name','age')
         等同于 select name,age,from index_Author
           {'names': '朱自清', 'age': 33}
           {'names': '朱自清', 'age': 33}
           {'names': 'laoshe', 'age': 33}
           {'names': '你好', 'age': 33}

         注意:values()可以用在所有的返回查询结果集的方法后面
           Author.objects.all().values("names","age") 

      4. 排序函数
          语法:order_by("列1","列2")
          用法:Entry.objects.order_by("列1",'列2')
              默认的排序规则是升序
              如果需要降序,则在列前添加一个"-"


          ex:
            1.Author.object.order_by("age")
            2.Author.object.all().order_by("-age")

    

  5. 对条件取反

          用法:Entry.objects.exclude(条件)
          ex:   
            1.Author.objects.exclude(id=3)
               select * from author where not(id=3)

            2. Author.objects.exclude(id=3,age=85)
               select * from author where not (id=3 and age=85)

     6. 根据条件查询部分行数据(重难点)
           
       方法:filter(参数)
         用法: Entry.object.filter(参数)
         1.使用Entry中的属性作为查询参数
           多个参数的话, 使用","隔开, 映射到sql语句上
           是使用and来进行关联的
          ex:
           1.Author.objects.filter(id=1)
             select * from  author where id=1  
           2. Author.objects.filter(id=1,name="莫言")
              select * from author where id=1 and name="莫言"


        2.通过Field Lookup(查询表达式)完成复杂条件的构建


           1.查询表达式:每个查询表达式都是一个独立的查询条件
             可以用在所有的有查询条件的位置处


           2.__exact
             作用:精确查询, 等值判断
             用法:Entry.objects.filter(属性__exact=值)
             ex:
               Author.objects.filter(id__exact=1)
               select * from author where id = 1;


             3.__contains
                作用: 筛选出属性中包含指定关键字的记录(模糊查询)
                ex:
                  Author.objects.filter(names_contains = "ao")
                  select * from author where names like "%ao%"
             4.__lt
                作用: 筛选出属性值小于指定值的记录


             5.__lte:
                 作用:筛选出属性值小于等于指定值的记录


             6.__gt
                作用: 筛选出属性值大于指定值的记录


             7.__startswitch
                作用: 筛选出以指定关键字开始的记录


             8.__endswith
                 作用: 筛选出以指定关键字结束的记录


           3.查询只返回一条数据
              语法:get(条件)
              用法:Entry.objects.get(查询条件/表达式)
              注意:
                该函数只用于查询一条数据.
          
           练习;
             http://localhost:8000/03_aulist/
             显示01_aulist.html视图


  3.修改数据
        1.修改单个数据
           1.通过get()得到要修改的实体对象
           2.  通过实体对象的属性修改属性值
           3.  在通过实体对象的save()保存回数据库
           ex:

               au = Author.objects.get(id=1)
              au.name = "laoshe"
              au.age = 45
              au.save()
        2.批量修改数据  
           调用查询结果集的update()完成批量修改
           Entry.objects.all().update(属性=值,属性=值)   
           ex:
              Author.objects.all().update(age=75) 
   
   4.删除数据
        调用实体对象/查询结果集的delete()即可

      1. 删除单个对象

          obj = Author.objects.get(id = 1)
          obj.delete()

      2. 删除多个对象
          Author.objects.all().delete()

     练习:
        完成删除操作
        1.点击删除链接是,删除对应的数据
            http://localhost:8000/04_delete/id
        2.在对应的视图中接收参数,并将对应的author删除


      作业:在查询列表的基础上完成下列操作
          1.点击修改的时候,将该用户的信息显示在05_au_html上
          2.每个数据都用文本框显示


       2.改版删除操作
         1.在Author 实体中增加一个属性,isActive,
         2. 在查询列表中,点击删除时,将要删除的用户isAcive更改为False
         3. 查询所有的数据时候, 只查询isActive为true的用户
            并显示在模板上
  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Django基础教程PDF是一本详细讲解Django框架的书籍。Django是一个基于Python的高效Web应用开发框架,使用Django可以快速开发高质量、安全且易维护的Web应用程序。这本书从Django基础概念、安装、配置、模型、视图、模板、表单、认证、管理等方面,详细解释了如何使用Django进行Web应用开发。 其中,书籍的第一部分主要讲解了Django框架的基础知识,包括Django的架构、安装配置、虚拟环境、应用以及包管理等等。第二部分则详细阐述了Django的各种模型,包括Model、QuerySet以及Django ORM的操作等。第三部分则重点讲解了Django的视图,包括视图函数、URL路由以及视图的响应等等。第部分则阐述了Django的模板系统,包括模板语言、模板渲染以及静态文件等。第五部分讲解了Django的表单系统,包括表单类的定义、视图函数的编写以及表单的提交和验证等。第六部分则深入讲解Django的认证系统、权限管理以及用户注册等内容。最后一部分则介绍了Django的管理后台、中间件、缓存、测试和部署等方面的内容。 总之,Django基础教程PDF对于想要学习并掌握Django框架的开发者来说是一本非常好的入门书籍。它详细介绍了Django框架的整个开发流程,给予开发者夯实的理论基础和实操能力,让开发者能够高效地使用Django框架进行Web应用开发。 ### 回答2: Django是一个高效的Python Web应用程序框架,它的特点是快速开发、可拓展性和丰富的功能性。对于初学者来说,学习Django框架并不是一件容易的事情,因此《Django基础教程》成为了很多开发者必备的学习资料。 《Django基础教程》详细介绍了Django框架的各种概念和操作方法,包括了模型、视图、模板、表单、路由等方面的基础知识。这本教程以实践为主,让读者通过自己手写一个简单的博客系统来获取对Django框架的全面认识。 教程的阅读需要基本的Python编程知识,因为它是使用Python语言编写的。在读完本教程后,读者可以掌握Django框架的开发流程,了解Django的中间件和模型、视图、模板的关系,掌握如何与数据库进行交互以及如何使用Django表单等。 值得一提的是,《Django基础教程》是一本中文教程,将一些比较抽象的概念解释得十分清楚易懂。而且它还针对Django 2.x 版本进行了详细介绍,非常贴近当前开发环境,可以让读者快速开发出一个简单的Web应用程序。 总而言之,《Django基础教程》是一本非常优秀、权威、全面的Django框架学习资料,它的内容详尽,范例丰富,让读者学习起来既轻松而又有深度。对于初学者来说,它是一个不容错过的学习宝典。 ### 回答3: Django是一个流行的Python Web框架,已经成为许多Web应用程序开发人员的首选。有很多教程和资源可用,其中包括Django基础教程,可作为入门学习Django的教材。 这本教程的重点是了解Django基础知识,例如Django框架的架构、模型-视图-控制器(MVC)模式、Django模型和Django视图等。它涵盖了创建新的Django项目,如何在Django项目中创建和管理应用程序,以及如何利用Django模板和表单在网页中呈现和处理数据。 该教程还提供了一些简单的应用程序示例,如博客和投票应用程序,这些教程旨在帮助读者嵌入并了解Django的工作原理。 在学习Django基础教程时,读者将学习如何编写干净、可读、可扩展和可维护的代码。这是应用程序开发中的最佳实践之一,有助于确保应用程序的可靠性。 总之,Django基础教程是入门学习Django框架的好材料,它能够为初学者提供一些基本的理解和编程技能,同时也提供了一些实用而有趣的示例,帮助学习者了解和熟悉Django框架的工作方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值