原文地址:Mapz的blog
这是系列第二篇,第一篇请移步
上一次我们介绍了如何搭建django项目,本次我们继续学习django项目的开发
数据库的接入
我们这里使用mySql数据库
先在虚拟环境中装 pymysql (MySQLdb在Python3中已经不能用)
1 | pip install pymysql |
打开settings.py
修改
1 | DATABASES = { |
详细修改方式参见 官网文档
另外针对 pymysql 还需要配置站点的_init_.py
1 | import pymysql |
其他配置
设置时区和语言
1 | LANGUAGE_CODE = 'zh-Hans' |
Django结构简介
django是一个MVC框架,数据上,使用模型model做ORM映射数据库
view层使用django的模版来做渲染
控制层用灵活的url路由来实现,后面我们陆续来介绍这些内容
创建数据库表
1 | python manage.py migrate |
这个命令会创建所有已安装的APP所需的数据表
所有已经安装的APP被配置在 settings.py 的
INSTALLED_APPS 属性下
创建model
Model 是 Django做对象映射的模型,你创建的 Model 类会被diango映射到数据库中
我们创建一个自己的model
修改 models.py
1 | from django.db import models |
Model 支持的数据类型和创建参数参见 官方文档
常用的参数比如choices,可以让参数在一个枚举中选择
例如
1 | class DeployProfile(models.Model): |
其他的类型就不再赘述
把我们自己的app加入到项目app中
编辑settings.py
1 | INSTALLED_APPS = [ |
重新创建表
1 | python manage.py makemigrations qk_deploy |
makemigrations 命令告诉系统,我的模型已经发生了变化,需要制作一个迁移
迁移做好之后,我们再用
1 | python manage.py migrate |
重新制作数据表
创建管理员
1 | python manage.py createsuperuser |
然后按提示输入,来创建一个管理员
启动服务器后
进入页面
就可以用你的管理员来登陆管理界面了
把我们的app加入到管理界面中来
修改app目录下的admin.py
1 | from django.contrib import admin |
就可以了
register参数也接收一个可迭代容器
1 | admin.site.register([Project,p1,p2,p3]) |
然后我们进入管理页面,发现上面的model已经可以管理了
但是如果我们想有一个自定义的名称,而不是类的名字,怎么办呢?
答案是在model中加上 meta
编辑Project model
1 | class Project(models.Model): |
其中 verbose_name 是显示的名称,而 plural是复数形式,我们中文没有复数形式,所以就直接一样就ok了
双薪管理页面,我们发现管理中显示的内容已经是我们写的’项目’了
至于模型的字段要显示我们想要的名字呢,也是一样的,修改model
1 | class Project(models.Model): |
好奇的同学又要问了,APP名字在管理界面怎么改呀
我们修改apps.py
在QkDeployConfig类下面增加一个属性
1 | class QkDeployConfig(AppConfig): |
刷新管理界面再看看~~
我们用管理工具创建新项目后,新项目在列表里面显示为 project object,这显然不是我们想要的,怎么办咧
为model加上字符串返回函数就可以了
1 | class Project(models.Model): |
刷新管理界面,显示的项目已经是我们设定的项目名称了
文本编码问题
如果遇到中文无法录入管理系统的问题,请检查数据库编码是否和程序中一致哦
不一致的话,请先修改数据库编码,然后删除数据表,重新migrate
到此,我们的数据库管理功能已经完成,也就是MVC中的M
下次我们继续说MVC中的V ,也就是 view 展示层