Day15 Web框架及Django框架
day15 2018-03-31
1. 上午重在理解
1. 用户浏览器 --> socket 客户端
4. 发送消息给服务端
7. 收到回复消息
断开
2. 博客园的server --> socket 服务端
1. 启动服务,
2. 绑定IP和端口,等待连接
3. 监听
while 1:
5. 服务端要接收消息
6. 返回消息
8。 断开
PUT|xxx.avi|1024
浏览器和web服务端 互相通信 要以来一个统一的规则(标准)
本质上就是互发的消息要有一个格式的要求
HTTP协议
浏览器往服务端发的消息叫:请求(request)
请求行 GET /index/ HTTP/1.1
请求头 k1:v1
\r\n
请求体
服务端回复给浏览器的消息叫:响应(response)
响应行 HTTP/1.1 200 OK\r\n (规定格式)
响应头 Content-Type: text/html; charset=utf-8\r\n
k2:v2\r\n
...
\r\n
响应体 我们在浏览器上看到的内容
总结上午讲解内容:
a. 接收浏览器发送的消息
b. 根据不同的路径返回不同的内容
c. 通过字符串替换 实现 动态网页
Web服务程序与Web应用程序之间的关系如下图:
Python Web框架分类:
1. 框架自带 a,b,c Tornado
2. 框架自带b,c 使用第三方a Django
3. 框架自带b,使用第三方的a和c Flask
另外一个维度的分类:
1. Django --> 大而全
2. 其他
Django:
1. 安装
pip install django==1.11.9
2. 新建Django项目
1. django-admin startproject 项目名
3. Django 设置 settings.py文件中
设置完Django项目,里面的.py文件的使用。
1. 注释掉 csrf相关的那一行(大概是46行!)
2. 配置html文件相关
3. 配置静态文件相关 /static/
Django里面的url.py指的是,url与函数对应的关系
4. 基础必备的三件套
1. HttpResponse --> 字符串
2. render() --> HTML文件 --> 打开HTML文件并且完成字符串的替换 (包含 request html文件名 转换字符串三个参数)
3. redirect(“/book_list/”) --> 跳转
5. HTML页面中form表单提交数据三个要点:
1. input一定要放在form表单里面,并且 input 要有name属性
2. form表单里面触发提交操作 一定要有submit按钮!!! <input type="submit" value="提交">
3. 要指定form表单提交的URL(action属性) 并且指定提交的方法(method属性)。提交from表单需要用到post
6,创建python里面的应用APP在现在的terminal s输入命令:python manage.py startapp app01(app名字)或者在窗口找到创建的Django目录下输入这个命令创建。
Django中操作MySql数据库的准备工作:
1,建个数据库
2,告诉Django去哪里连数据库
3,MYSQLdb、pymysql,告诉Django使用pymysql连接MySQL数据库
import pymysql
pymysql.install_as_MySQLdb()
4,在app/models.py文件中,根据特定的语法 创建类
5,执行两个命令
{"email": "alex@1.com", "pwd": "alexdsb"}
2. ORM 对象关系映射 SQLAlchemy
连接数据库
类 --> 数据表
属性 --> 字段
对象 --> 数据行
让程序员不用自己写SQL语句,而是利用程序自动翻译的SQL语句
$("#i1") document.getElementById("i1")
特殊的语法 SQL语句
ORM不能操作数据库,所以才要自己建数据库!!!
Django中操作MySQL数据库的准备工作:
1. 自己用SQL语句建个数据库 --> create database s20;
2. 告诉Django去哪儿连数据库
在settings.py文件中设置:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # 告诉Django连接数据库的类型
'NAME': 's20',
'HOST': "127.0.0.1",
'PORT': 3306, # 不要加引号
'USER': "root",
"PASSWORD": "123456", # 要加引号
}
}
3. MySQLdb、pymysql,告诉Django使用pymysql连接MySQL数据库
project/__init__.py文件中:
import pymysql
pymysql.install_as_MySQLdb()
4. 在app/models.py文件中,根据特定的语法 创建类
class Book(models.Model):
# 定义一个自增的ID主键
id = models.AutoField(primary_key=True)
# 定义一个最大长度为32的varchar字段
title = models.CharField(max_length=32)
5. 执行两个命令
1. python manage.py makemigrations --> 用小本本记录 app/models.py文件的任何改动
2. python manage.py migrate --> 把上面的改动翻译成SQL语句,然后去数据库中执行
1. 操作数据表
2. 操作数据行
1. 增
Book.objects.create(title="书名")
2. 删
models.Book.objects.get(id=2).delete()
3. 改
obj = models.Book.objects.get(id=1)
obj.title = "番茄物语 第二版"
obj.save() --> 把改动同步到数据库中!!!
4. 查
查单个:
obj = models.Book.objects.get(id=1)
查所有:
objs = models.Book.objects.all()
书管理系统:
1. /book_list/ 在页面展示所有的书
ORM外键关联
主机表 主机组表
id name ip memo group id name
3. 作业
1. 把课上我们写的书管理系统,用Bootstrp写完
2. 把外键关联的增删改查自己写一遍!
3. 作业
1. 主机表
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 继承的思维:从思维模式到架构设计的深度解析
· 如何在 .NET 中 使用 ANTLR4
· 后端思维之高并发处理方案
· 理解Rust引用及其生命周期标识(下)
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· Cursor预测程序员行业倒计时:CTO应做好50%裁员计划
· 想让你多爱自己一些的开源计时器
· 大模型 Token 究竟是啥:图解大模型Token
· 用99元买的服务器搭一套CI/CD系统
· 当职场成战场:降职、阴谋与一场硬碰硬的抗争