web框架django 第一天课上总结
###OSI七层模型
- 应用层
- 表示层 应用层
- 会话层
- 传输层
- 网络层
- 数据链路层
- 物理层
- socket 套接字 位于应用层和传输层之间虚拟层,一组接口
- c/s b/s
- 百度服务器 socket服务端
- 1.绑定ip和端口
- 2.等待连接
- 5.接受数据
- 6.返回数据
- 9.断开连接
- 浏览器 socket客户端
- 3.连接服务端
- 4.发送数据
- 7.接受数据
- 8.浏览器渲染数据
- 9.断开连接
###HTTP
- 1.请求和响应
- 请求(request) 浏览器给服务器发的消息
- 格式:
- '请求方法 URL路径 协议版本
- k1: v1
- k2: v2
- 请求数据'
- GET 没有请求数据
- 响应(response) 服务器给浏览器回的消息
- 格式:
- 'HTTP/1.1 状态码 状态描述
- k1: v1
- k2: v2
- 响应数据(HTML文本)'
- 2.请求方法 8种
- GET 获取一个页面
- POST 提交数据
- 3.状态码
- 1xx
- 2xx 200 201
- 3xx 重定向
- 4xx 请求的错误 404 403
- 5xx 服务器的错误
###web框架的功能
- 1.socket收发消息
- 2.根据不同的路径返回不同结果
- 3.返回动态页面 (字符串的替换) 模板的渲染
- Django flask tornado
### 1.下载安装
- 1.命令行:
- pip install django==1.11.22 -i https://pypi.tuna.tsinghua.edu.cn/simple/
- pip install django 不指定版本号,默认安装最新版
- 2.pycharm
### 2.创建项目
- 1.命令行
- 切换一个存放项目的目录下
- django-admin startproject 项目名称
- 2.pycharm
- file _> new project _> 左侧选Django ——》 输入项目的路径 ——》 选择解释器 ——》 创建
###3.启动
- 1. 命令行
- 切换到项目的根目录下 manage.py
- python manage.py runserver # 默认127.0.0.1:8000
- python manage.py runserver 80 # 指定端口号127.0.0.1:80
- python manage.py runserver 0.0.0.0:80 #共享并指定端口号 0.0.0.0:80
- 2. pycharm
###4.配置
- BASE_DIR 项目的根目录
- TEMPALTES 模板的配置 DIRS = []
- DATABASES 数据库
- STATIC_URL ='/static/' 静态文件的别名
- STATICFILES_DIRS = [ # 以后静态文件找不到 首先看这个配置
os.path.join(BASE_DIR,'static')
]
###5.APP
- 创建
- 命令行:python manage.py startapp app名称
- 注册:
INSTALLED_APPS = [
'django.contrib.admin',
...
'app01',
'app01.apps.App01Config' # 推荐的方式
]
###6.提交POST请求
目前情况 注释 MIDDLEWARE
'django.middleware.csrf.CsrfViewMiddleware'
###7.urls.py
- url路径和函数的对应关系
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^login/', views.login),
]
###8.写函数
- app下的views.py中
- def xxx(request):
- request —— 请求相关的内容
- request.method —— 请求方式 GET POST
- request.POST —— form 表提交POST请求的数据 {}
- return 响应
- 响应:
- from django.shortcuts import render, HttpResponse, redirect
- HttpResponse —— 》 返回的字符串
- render(request,'模板的文件名',{}) ——》 返回是一个页面
- redirect('重定向的地址') ——》 重定向
- 模板 templates
###9.orm对象关系映射(object relational mapping)
- django 使用mysql数据库的配置:
- 1.创建一个mysql数据库
- 2.在settings中配置数据库:
- 3.使用pymysql模块连接mysql数据库
在与settings同级目录下的__init__.py中:
import pymysql
pymysql.install_as_MySQLdb()
- 4.创建表,在app下的models.py中写类:
```python
from django.db import models
# Create your models here.
class UserInfo(models.Model):
username = models.CharField(max_length=32) # varchar(32)
password = models.CharField(max_length=32)
```
- 5.执行数据库迁移的命令
- python manage.py makemigrations # 创建迁移文件 记录上models.py的变更记录
- python manage.py migrate # 执行迁移数据库
###10. orm具体操作:
```python
ret = models.Publisher.objects.all() # 查询所有的数据 对象列表
for i in ret:
print(i,type(i)) # 对象 对应数据库一条数据
print(i.name,i.id) # 属性 字段的值
models.Publisher.objects.filter(name=publisher_name) 查不到就是空列表
models.Publisher.objects.create(name=publisher_name) 新增
models.Publisher.objects.filter(id=id).delete() 删除
修改
publisher_name = request.POST.get('publisher_name')
# 编辑
pub_obj.name = publisher_name # 只在内存中有变化
pub_obj.save() # 保存修改到数据库
```
###11.模板
```html
{% for pub in ret %}
<tr>
<td>{{ pub.id }}</td>
<td>{{ pub.name }}</td>
</tr>
{% endfor %}
```