01 Django简介

前戏

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. 计算机名称不要出现中文
  2. 项目中所有的文件名称不要出现中文

基本使用

# 常见操作命令

# 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          自带的测试文件

posted @ 2023-02-13 06:15  生姜J  阅读(19)  评论(0)    收藏  举报
返回顶端