前戏
Wsgiref模块
封装了socket代码
请求来的时候将http数据格式拆封成一个大字典
响应走的时候将数据打包成符合http协议要求的数据格式
# 模块封装了socket代码并将请求数据处理成诸多k:v键值对
from wsgiref import simple_server
def run(request, response):
"""
:param request: 请求相关的数据
:param response: 响应相关的数据
:return: 返回给客户端的展示数据
"""
response('200 OK', []) # 固定编写 无需掌握
current_path = request.get("PATH_INFO")
if current_path == '/login':
return [b'hello login html']
elif current_path == '/register':
return [b'hello register html']
return [b'404 error']
if __name__ == '__main__':
server = simple_server.make_server('127.0.0.1', 8080, run)
'''监听本机8080端口 一旦有请求访问 自动触发run方法的执行'''
server.serve_forever()
Jinja2模板
模板的渲染:后端生成好数据,通过某种方式传递给前端页面使用(前端页面基于模板语法使用后端传过来的数据)
后端把字典传给前端html页面,前端能够通过 .key 的方式取值
from jinja2 import Template
def get_dict(request):
user_dict = {'name': 'jason', 'pwd': 123, 'hobby': 'read'}
new_list = [11, 22, 33, 44, 55, 66]
with open(r'templates/get_dict.html', 'r', encoding='utf8') as f:
data = f.read()
temp_obj = Template(data)
res = temp_obj.render({'user':user_dict,'new_list':new_list}) # user=user_dict
return res
get_dict.html
模板语法:前端也能使用后端的一些语法,操作后端传入的数据
<h1>字典数据展示</h1>
<p>{{ user }}</p>
<p>{{ user.name }}</p>
<p>{{ user['pwd'] }}</p>
<p>{{ user.get('hobby') }}</p>
<h1>列表数据展示</h1>
<p>
{% for i in new_list %}
<span>元素:{{ i }}</span>
{% endfor %}
</p>
python虚拟环境
django简介
python主流web框架
django
大而全 自带的功能非常的多 但是有时候会略显笨重 类似于'航空母舰'
socket: 用别人的 wsgiref
路由与视图函数匹配: 自己写的
模板语法: 自己写的
flask
小而精 自带的功能非常的少 但是第三方模块非常的多 类似于'游骑兵'
flask的第三方模块加到一起甚至比django还多 并且也越来越像django
flask由于过多的依赖于第三方模块 有时候也会受制于第三方模块
socket: 用别人的 wsgiref >> werkzeug
路由与视图函数匹配: 自己写的
模板语法: 用别人的 jinja2
tornado
异步非阻塞框架 速度极快 甚至可以用于充当游戏服务器
socket、路由与视图函数匹配、模板语法: 都是自己写的
还有一些占比较小 但是也很厉害的框架
fastapi、sanic......
django下载
pip3 install django==x.xx.xx
验证是否下载成功: cmd窗口直接输入django-admin
注意事项
- 计算机名称不要出现中文
- 项目中所有的文件名称不要出现中文
基本使用
# 常见操作命令
# 1.创建django项目
django-admin startproject 项目名 # 用命令行创建django项目,不会自动新建templates模板文件夹,需要手动创建,并且需要去settings.py文件中注册该文件路径
"""
TEMPLATES = [
'DIRS': [os.path.join(BASE_DIR, 'templates')]
"""
# 2.启动django项目
cd 项目名
python3 manage.py runserver IP:PORT # IP:PORT可以不写 默认在本地8000端口起服务
# 3.创建app应用,创建的应用一定要在settings中注册才能生效,否则无法识别
python3 manage.py startapp 应用名 # 方式一
django-admin startapp 应用名 # 方式二
"""
INSTALLED_APPS = [
'app01' # 简写
'app01.apps.App01Config' # 全称
]
"""
主要文件
-mysite文件夹名称
--mysite同名文件夹
----settings.py 项目配置文件
----urls.py 总路由层
--manage.py 项目入口文件
--db.sqlite3 运行项目后自动创建(django自带的小型数据库)
--应用文件夹 通过命令创建(可以创建任意个数)
----migrations文件夹 存储数据迁移记录
----admin.py django提供的后台管理
----apps.py 用于配置文件的应用注册(创建的应用都需要去配置文件中注册)
----models.py 模型层(与数据库相关)
----views.py 视图层(编写当前应用核心业务逻辑代码)
----tests.py 自带的测试文件
标签:01,简介,py,django,----,dict,user,Django,模板 From: https://www.cnblogs.com/jlllog/p/17115165.html