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基础的主要内容,如果未能解决你的问题,请参考以下文章
我的C/C++语言学习进阶之旅解决使用algorithm库里面的sort函数的时候,编译报错:未能使函数模板“unknown-type std::less<void>::operator ()(代码片
我的C/C++语言学习进阶之旅解决使用algorithm库里面的sort函数的时候,编译报错:未能使函数模板“unknown-type std::less<void>::operator ()(代码片