首页 > 其他分享 >01 Django简介

01 Django简介

时间:2023-02-13 06:22:04浏览次数:41  
标签:01 简介 py django ---- dict user 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          自带的测试文件

标签:01,简介,py,django,----,dict,user,Django,模板
From: https://www.cnblogs.com/jlllog/p/17115165.html

相关文章

  • 2019 CCF推荐会议列表
       =======================================   一、计算机体系结构/并行与分布计算/存储系统A 类序号简称会议全称1PPoPPACMSIGPLANSymposiu......
  • [WC2019] 数树 题解
    关于https://codeforces.com/blog/entry/112709,我的评价是:你说得对,但是原神,后边忘了算了。[WC2019]数树神题。看到题后我的第一反应是:白云哭了。所以我也哭......
  • 基于Django开发的小型超市收银系统及各种炒股指标信息
    登录页面注册修改密码诗词推荐背景刷新更换登录 首页今日收益金额日收益折线图商品热度排行商品预警信息今日待办任务诗词推荐      ......
  • c语言从零基础开始学——01
    C语言第一个程序#include<stdio.h>intmain()//主函数-程序的入口,有且只能有1个main函数{printf("helloworld\n");//printfunction-打印函......
  • Tomcat漏洞(CVE-2017-12615)复现
     漏洞原理:漏洞原理:Tomcat配置文件/conf/web.xml配置了可写(readonly=false),导致可以使用PUT方法上传任意文件,攻击者将精心构造的payload向服务器上传包含任意代码的JSP......
  • 01AI编译器后端优化介绍
    1、AI编译器架构 准备好用Caffe、Tensorflow等训练好的神经网络模型。神经网络模型转换成GraphIR,然后经过GraphOptimizer的一系列Pass优化,列如:图算融合、数据排布......
  • 【Vue day01】前端发展介绍 Vue的快速使用 插值语法 指令系统之文本指令、事件指令、
    目录前端发展介绍Vue框架入门M-V-VM思想组件化开发单页面应用Vue的快速使用前期准备快速使用对象与标签绑定查看Vue对象插值语法三目运算符指令系统之文本指令v-text和v-......
  • django-channels实际应用
    django实现websocket实时数据推送。应用场景群组/单对单语音聊天页面数据实时推送(后端主导)技术django+channelsdjango>=2channels官方wsgiWeb服务器网关接口(P......
  • LOJ3075 「2019 集训队互测 Day 3」组合数求和
    首先答案能用生成函数的角度求出:令\(C(x)=\sum\limits_{i=0}^{n-1}(1+x)^{id}\),则\(f(j)=[x^j]C(x)\)。就是求\(C(x)\)的前\(m\)项系数。考虑这是等比数列求和,令......
  • 软件开发 101:从程序员到软件工程师
    在我多年的软件开发经验中,我有机会与来自其他领域的几位杰出的研究人员和工程师一起工作。他们通常最终会利用自己的专业知识编写一些非常聪明的代码,随着需求的变化和项目的......