Python学习之旅—DjangoORM基础

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python学习之旅—DjangoORM基础相关的知识,希望对你有一定的参考价值。

前言    

  今天这篇博客,笔者主要带领大家梳理Django中的Moedl模型,各位主要需要掌握两点:1.一些重点API的使用,2.表与表重点关系的掌握。


一.Django ORM

ORM:Object Relational Mapping(关系对象映射)

     我们写的类表示数据库中的表,我们根据这个类创建的对象是数据库表里的一行数据,obj.id obj.name.....就是数据库一行数据中的一部分数据。明白了这点,我们就可以愉快地开启ORM之旅了。老样子,新建Django项目,创建static静态文件目录===》新建应用==》在应用下的models.py中创建表结构===》在全局urls.py和应用下的urls.py中配置url和视图函数的映射===》在全局settings.py的INSTALLED_APPS 目录下配置我们新建的应用,然后执行migrate命令生成表结构==》往表中插入数据即可。

     以上就是我们常规的流程,涉及到的主要命令和注意点有如下两种: 

1.关于静态文件里面具体内容的存放
实际工作中,一个大型项目的前端部分会涉及到各类样式文件,因此笔者这里推荐各位按照不同的模块存放,对于第三方库,则存放在libs文件夹中,而对于所有模块都会使用的库我们则存放在common文件夹中,后期我们将学习webpack等比较流行的模块化
打包工具。

如下图所示:

技术分享图片

2.关于使用python manage.py 命令执行与项目有关的命令,我们可以使用Pycharm为我们提供的快捷命令行,可以直接在命令行中执行startapp,makemigrations,migrate等命令。

技术分享图片

3.注意,在Djangon的最新版本中,每当我们新建完应用后,它会自动将应用注册到settings.py文件的INSTALLED_APPS中,例如我们新建了项目studentapp,注册信息为:studentapp.apps.StudentappConfig,但是在Python较低的版本中并没有直接注册
需要我们手动注册,笔者使用的版本是1.8,因此需要自己手动导入后,再使用makemigrations,migrate等命令生成表。

4.我们首先在应用studentapp下的models.py文件中新建模型类,注意在Django中,有且仅有在该文件中可以写数据库的相关类:

class Student(models.Model):
    sid = models.AutoField(primary_key=True)
    name = models.CharField(max_length=32)
    birth = models.DateField()
    class_id = models.IntegerField(default=0)

5.类写完之后,我们再去settings中注册该应用:

技术分享图片

6.最后我们在终端创建数据表student,如下所示:

技术分享图片

技术分享图片

注意,由于我们是第一次在项目下执行命令,所以第二次使用migrate时并没有指定应用名称,如果指定了应用名称,它反而会报错,因为Django在初始条件下的session表并没有被创建,后期如果我们修改了表中的字段,再来执行migrate时候,可以指定具体的应用名称。

8.为了方便我们观察ORM转换成的SQL语句,我们可以在setting.py文件中配置如下信息:

LOGGING = {
    version: 1,
    disable_existing_loggers: False,
    handlers: {
        console:{
            level:DEBUG,
            class:logging.StreamHandler,
        },
    },
    loggers: {
        django.db.backends: {
            handlers: [console],
            propagate: True,
            level:DEBUG,
        },
    }
}

9.我们这里默认使用Django提供的数据库,SQLite3,最终我们完成urls.py文件的配置即可。注意,在sqllite3中一定要选择好项目的db3.sqlite文件如下所示:

技术分享图片

10.定义add视图函数,往student表中插入数据:

 

以上是关于Python学习之旅—DjangoORM基础的主要内容,如果未能解决你的问题,请参考以下文章

Python学习之旅 —— 基础篇面向对象

Python学习之旅 —— 基础篇反射冒泡排序算法

Python学习之旅—Django基础

Python学习之旅

我的C/C++语言学习进阶之旅解决使用algorithm库里面的sort函数的时候,编译报错:未能使函数模板“unknown-type std::less<void>::operator ()(代码片

我的C/C++语言学习进阶之旅解决使用algorithm库里面的sort函数的时候,编译报错:未能使函数模板“unknown-type std::less<void>::operator ()(代码片