django
1. django-admin startproject my_site 创建项目
2.项目目录结构
mysite
-----manage.py #管理程序的文件,启动和结束等
----my_site
----__init__.py
----settings.py #程序的配置文件
----urls.py #程序的路由系统 即:url和处理其函数的对应关系
----wsgi.py #指定框架的wsgi
3.django-admin.py startapp app 创建一个app(大项目下的小模块)
----__init__.py (代表是一个python的包)
----admin.py 数据库的管理后台
----apps.py django把项目和app关联起来的文件
----migrations 数据库相关
-----__init__.py
----modes.py 数据库操作的地方
----tests.py #单元测试
----views.py #业务逻辑代卖
4.第一次django请求
1.匹配路由,路由分发器查找用户请求的url对应关系
1.找到了业务函数,就调用
2.找不到就报404
2.业务函数,执行业务逻辑
3.返回数据给浏览器
HttpResponse方法返回数据给前端
5.模版初探
1.配置settings.py
2.views.py
return render(request,'form.html')
6.MVC&MTV 架构
MVC 是一种MVC(Model View Controller 模型-视图-控制器)设计创建web应用程序的模式
Model(模型) 一般对应数据操作、记录的存取
View(视图) 决定如何展示数据
Controller(控制器)负责处理用户交互的部分,控制器负责从视图读取数据,控制用户输入,并向模型发送数据
Django是一个MTV框架,其架构模版看上去与传统的MVC架构并没有太大的区别,Django将MVC中的视图进一步分解为Django视图和Django模版两个部分,分别决定“展现哪些数据”和“如何展现”使得Django的模版可以根据需要随时替换,而不仅仅先治愚内置的模版,至于MVC控制器部分,由Django架构的URLconf来实现。(MVTC)
7.路由 动态路由 静态路由
r-----抑制特殊字符转译 $ 结尾
uuid
自定义converters
自己写sql语句
1.sql注入
2.代码sql写在一起了,导致接偶差
3.开发人员不一,导致性能
4.开发效率低
什么是ORM
对象关系映射(Object Relational Mapping)它的实质就是将关系数据库中的业务逻辑数据用对西那个的形式表示出来,并通过面向对象(Object - Oriented)的方式将这些对象组织起来,实现系统逻辑的过程
在ORM过程中最重要的概念就是映射(Mapping),通过这种映射可以使业务对象与数据库分离。从面向对象来说,数据库不应该和业务逻辑绑定在一起,ORM则起到这样的分离作用,使数据库层透明,开发人员真正的面向对象。
实现了代码与数据库的结果 不需要写sql,提高了开发效率 防止sql注入
牺牲性能 复杂语句力不从心
Blog系统表结构设计
1.每个用户有自己的账户信息
2.用户可以发文章
3.文章可以打多个标签
register---注册
不过注意,python3 连接mysql的使用pymsql,MysqlDB模块300年没有更新了,但django默认调用的还是MySQLdb,so pymysql有个功能可以让django以为是用了MySQLdb,即在项目目录下的__init__.py中加上句代码就好
import pymsql
pymysql.install_as_MySQLdb()
django 数据库同步工具
migrations
1.生成同步文件
python manage.py makemigrations
2.同步
python manage.py migrate
ORM 创建
1.直接创建
2.先生成对象,再创建
shell from app01 import model
python manage.py shell
model.Account.objects.create(
)