orm单表操作

 

### 一、内容回顾

    #### 1. URL反向解析

​    

```python
path('login/', views.login, name="login"),
```

 1. 视图中使用

    ```python
    from django.urls import reverse
    
    url = reverse("login")
    ```

    2. 模板中使用

    ```html
    {% url 'login' %}
    ```

    好处:便于扩展,当你的url发生改变的时候,通过反向解析的话,直接能获取最新的URL,不用自己手动修改。

#### 2. 名称空间

​    背景:

​        多个app时,下面有同名的name时,可以通过指定名称空间。来定位到,具体URL。

​    django1与django2的区别:

​        django1

```python 
url('^app01/', include("app01.urls", namespace="app01")),
```

​        django2

```python
path('app01/', include(("app01.urls", "app01"))),
path('app02/', include(("app02.urls", "app02"), namespace="app02")),
```

 1. 视图中使用

    ```python
    url = reverse("app01:login")  # login是app01下的
    ```

    2. 模板中使用

    ```html
    {% url 'app01:login' %}
    ```

#### 3. ORM简介

 1. 概念

    对象关系映射(Object Relational Mapping,简称ORM)

2. 优点:

   1. 写python代码,实现对数据表的相关操作。提高开发效率;
   2. 平滑切换数据库。

3. 缺点:

   1. python代码,转换SQL需要时间,效率相对会有影响;
   2. SQL能力下降;

4. django如何使用mysql数据库

   1. 手动创建数据库

      ```sql
      create database 库名 default charset=utf8;
      ```

   2. settings里配置

      ```python
      DATABASES = {
          'default':{
              'ENGINE': 'django.db.backends.mysql',  # 引擎
              'HOST': '127.0.0.1',  # 数据库所在ip
              'PORT': 3306,  # 端口
              'NAME': '数据库名',  # 
              'USER': '用户名',
              'PASSWORD': '',  # 密码为空时,空字符串
          }
      }
      ```

   3. 配置init(settings同级的init文件)

      ```python
      import pymysql
      pymysql.install_as_MySQLdb()
      ```

   4. 在models里定义模型类

      ```python
      from django.db import models
      
      
      class Book(models.Model):
          title = models.CharField(max_length=32)
          ...
      ```

   5. 命令行输入命令

      ```python
      python manage.py makemigrations  # 记录models变更记录下来
      python manage.py migrate  # 同步到数据库
      ```

5. 单表操作

   1. 新增

      1. 方式一:

         ```python
         book = models.Book(title="xxids", price=234,...)
         book.save()  # 同步到数据库
         
         ```

      2. 方式二:(objects管理对象)

         ```python
         book = models.Book.objects.create(title="xxids", price=234,...)
         ```

   2. 查询

      1. QuerySet类似列表
         1. all  返回所有数据,对象
         2. filter 返回过滤满足条件的 对象列表。
         3. order_by 默认是升序,降序-
         4. values  类似字典。
         5. reverse  反转
         6. distinct 去重
         7. values_list  类似元组
         8. exclude  跟filter相反

      2. 返回对象
         1. get方法 (多个结果和没有结果会报错,有且只能有一个才行)
         2. first方法  获取最开始的一个
         3. last 方法  获取最后一个。
      3. 返回数据类型
         1. exists 返回值布尔值。判断是否有数据。
         2. count 返回int  计数。

### 二、今日概要

     1. 模糊查询
     2. 单表删除
     3. 单表修改
     4. 作业讲解
     5. ORM扩展(?)

### 三、今日详细

    #### 1. 模糊查询

​    

#### 2. 编辑操作

 1. 新增的流程

    ![1552617211012](../课上截图/1552617211012.png)

    2. 编辑流程

    ![1552617443761](../课上截图/1552617443761.png)

2. 单表编辑操作(代码见前一天的orm_danbiao的edit_book视图)

   1. 方式一  对象的形式  save同步数据
   2. 方式二  objects管理对象 update方法
      1. 关键字传参
      2. **打散传参


#### 3. 单表删除操作

1. 流程

   ![1552624686590](../课上截图/1552624686590.png)

2. 删除方式
   1. obj.delete()
   2. queryset.delete()  # 有多个时,会全部删除。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值