Django简单总结
本篇为Django学习过程中的一些操作记录和遇到的问题,有点零碎,仅供参考
Web框架
对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端。
对于真实开发中的python web程序来说,一般会分为两部分:服务器程序和应用程序。
服务器程序负责对socket服务器进行封装,并在请求到来时,对请求的各种数据进行整理。
应用程序则负责具体的逻辑处理。为了方便应用程序的开发,就出现了众多的Web框架,例如:Django、Flask、web.py 等。
WSGI(Web Server Gateway Interface)是一种规范,
它定义了使用python编写的web app与web server之间接口格式,实现web app与web server间的解耦。
客户端请求流程:
服务端在开始监听之后,客户端通过浏览器向服务端发出请求,服务端在接收到请求之后会和客户端建立连接,
并由路由系统解析URL,根据不同的URL调用不同的功能模块,来执行不同的逻辑,并把执行结果返回给客户端,
如果需要连操作据库,则需要在功能模块中对数据库进行连接,并执行数据的存取逻辑。
Django简介
Django是基于Python的一个web框架,相较与其他web框架,
其优势为:大而全,框架本身集成了ORM、模型绑定、模板引擎、缓存、Session等诸多功能。
MVC:Model、View、Controller MTV:Model、Template、View
MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式,
同时提供了对 HTML、CSS 和 JavaScript 的完全控制。
Model(模型)负责在数据库中存取数据;
View(视图)处理显示页面;
Controller(控制器)用户交互和数据逻辑处理,即一个一个的py文件;

Django安装
通过下载安装包安装
https://www.djangoproject.com/download/
python setup.py install
通过pip命令安装
pip install django
使用国内源可以加快安装速度
pip install django -i https://pypi.douban.com/simple
创建django项目(MTV模式)
终端命令:django-admin startproject sitename
IDE创建Django程序时,本质上都是自动执行上述命令
其他常用命令:
python manage.py runserver 0.0.0.0:8000 启动服务端程序
python manage.py startapp appname 新建 app
python manage.py makemigrations 创建数 据库表或更改数据表或字段
python manage.py migrate
python manage.py syncdb 1.6及以下版本用
python manage.py flush 清空数据库
python manage.py createsuperuser 创建超级管理员
python manage.py dumpdata appname > appname.json 导出数据,导入数据
python manage.py loaddata appname.json
python manage.py shell Django 项目环境终端
python manage.py dbshell 数据库命令行
python manage.py 更多命令
项目初始文件介绍
manage.py 启动文件
__init__.py 区分python程序包和普通文件夹
settings.py 配置参数文件
urls.py URL映射文件
wsgi.py 服务端接口封装文件
asgi.py
一个Django项目可以包含多个app应用程序,每个app可以作为一个单独的网站使用
在IDE中,在Django项目上右键-Django-Create application,则会自动生成一个app程序包
app程序包文件介绍
migrations程序包不用管不会用到
admin.py 用于后台管理
test.py 用于测试
models.py 数据库操作M
views.py 逻辑处理V
templates 显示页面文件T 手动创建
在IDE中运行manage.py文件通过Run Configurations指定参数
runserver 0.0.0.0:8888
修改urls.py文件,添加自己的url映射,注意url最后的/是否需要
在app程序包中的views.py文件中定义url映射的函数
在urls.py文件中导入views.py文件中的函数
整体流程如下:
1.创建Django项目
2.创建app应用
3.添加url映射
4.定义相关函数
5.导入相关函数
6.运行Django程序
7.浏览器访问
路由系统
在Django程序的urls路由映射中,可以通过正则表达式给映射的函数动态传递参数,
参数传递可以按指定顺序,也可以根据参数名具体对应,
还可以为参数指定默认值,默认值只能按从后往前顺序指定。
可以在全局urls文件中,对不同app的地址分发到其自己urls文件中,再映射到具体函数,
此时需要在各自urls文件中导入各自函数。
数据库操作
在models.py文件中编写数据库操作相关逻辑,并通过定义类来定义要创建的表及其字段
Django会根据models里的代码自动创建表,但需要提前手动创建数据库
需要在setting.py文件中指定数据库和用户名密码
需要在setting.py文件中添加用到的app,使其和Django联系起来
需要安装mysql操作模块,Python3中是pymysql
Django连接mysql时默认使用MySQLdb驱动,但MySQLdb不支持Python3,
因此这里将MySQL驱动设置为pymysql,使用 pip install pymysql 进行安装,
然后在工程文件__init__.py添加以下代码即可
import pymysql
pymysql.install_as_MySQLdb()
另外,由于版本问题,需要修改Django源码
找到site-packages>django>db>backends>mysql->base.py文件,注释掉36-37两行代码
在IDE中,通过以下两步操作执行命令来生成定义的表
在Django项目上右键-Django-Make Migrations-指定app
相当于在该app下建立 migrations目录,并记录下所有关于modes.py的改动
比如0001_initial.py, 包含相应的SQL命令,但是这个改动还没有作用到数据库文件
在Django项目上右键-Django-Migrate
将该改动作用到数据库文件,
再查看数据库中,已经有了models文件中定义的表
如果要添加或修改表,需要修改models文件,并再次执行以上两步操作
常用字段类型有几种,CharField、IntegerField、BooleanField、TextField、DateTimeField
对于表字段可以设置其属性,如主键,必输,格式检查,是否为空,默认值等
一对多:models.ForeignKey(其他表)
多对多:models.ManyToManyField(其他表)
一对一:models.OneToOneField(其他表)
to, # 要进行关联的表名
to_field=None, # 要关联的表中的字段名称
on_delete=None, # 当删除关联表中的数据时,当前表与其关联的行的行为
模板即将数据嵌套到HTML文件中,再整体显示给用户
在Django项目下的template目录中创建HTML文件,并在setting中指定模板路径为template
可以自定义simple_tag,也可以使用模母板和子板,以及form表单定义字段
可以在Django项目下参加static目录用来存放静态文件和js文件等。
浙公网安备 33010602011771号