day51 Django
Django_daima
1.创建一个Django项目
1.创建Django启动项
0.无启动项,进入启动页.png
1.创建启动项.png
2.templates文件创建.png
1.Django下载.png
2.2创建一个Django项目2.png
2.创建一个Django项目.png
3.mysite项目配置.png
4.创建Django应用.png
5.启动django.png
6.启动django成功.png
7.pycharm快捷创建djangoxm.png
8.2创建django项目和应用.png
8.快速创建django应用.png
DJango创建项目成功.png
templates
1.Web框架.png
1.纯手撸web框架.py
2.Django版本图 以1.11版本为主.png
2.类型转换技巧.py
3.基于wsgiref撸.py
urls.py
views.py
创建应用.png
myfirstdjangodemo
app01
migrations
__init__.py
admin.py
apps.py
models.py
tests.py
views.py
myfirstdjangodemo
2. setting templates文件创建.png
2.1setting templates 空.png
2.2 settings yingyongzhuce.png
2.3应用注册.png
__init__.py
settings.py
urls.py
wsgi.py
templates
4.get_db.html
11.登录示例.html
manage.py
readme
1 Django 2 3 1.建议手撸(Django)版的Web框架 4 cs与bs 架构 5 1.客户端 服务端 6 2.浏览器 服务端 7 本质:bs 也是 cs 8 9 HTTP协议 10 四大特性 11 1.基于TCP/IP作用于应用层的协议 12 2.基于请求响应 13 3.无状态 14 cookie,session,token(携带状态) 15 4.无连接 16 长链接websocket 17 18 数据格式 19 1.请求首行 20 2.请求头 21 3.请求体 22 响应状态码 23 1xx 24 2xx 25 3xx 26 4xx 27 5xx 28 29 30 2.基于wsgiref模块 及拆分成不同的文件之后,加一个功能只需要在两个地方修改代码即可 31 1.urls.py 路由与视图的对应关系 32 2.views.py 视图函数 33 34 动静态网页 35 静态网页 36 数据是死的,万年不变 37 动态网页 38 数据不是写死的 是动态获取的 39 比如: 40 1.后端实时获取当前时间"传递"给前端页面展示 41 2.后端从数据库获取数据"传递"给前端页面展示 42 传递给前端页面 >>> 页面渲染 43 44 3.jinja2 模块 45 pip3 install jinja2 46 由于flask框架是依赖于jinja2的 所以下载flask 框架也会自带jinja2模块 47 模板的渲染包含了模板语法 48 49 4.模板语法(贴近Python语法) 50 前端也能够使用后端的一些语法 操作后端传入的数据 51 52 <p>{{data}}</p> 53 <p>{{data["username"]}}</p> 54 <p>{{data.password}}</p> 55 <p>{{data.get("hobby")}}</p> 56 {%for user_dict in user_list%} 57 <tr> 58 <td>{{user_dict.id}}</td> 59 <td>{{user_dict.name}}</td> 60 <td>{{user_dict.password}}</td> 61 </tr> 62 {%endfor%} 63 64 5.推导Django 原理 小结 65 1.纯手撸Web框架 66 1.手动书写socket代码(服务器 HTTP协议 conn.send(b"HTTP/1.1 200 OK ")) 67 2.手动处理http数据,获取用户访问的url 68 data = conn.recv(1024) 69 current_path = data.split(" ")[0].split("")[1] 70 if current_path == "/index": 71 return [b"hello word"] 72 3.根据用户访问url 的不同 响应不同的结果 73 2.基于wsgiref模块 帮助我们处理socket 以及http数据 wsgiref 模块 74 wsgiref 模块 75 from wsgiref.simple_server import make_server 76 1.封装了 socket的代码 请求来的时候 解析http数据帮你打包成一个字典传输给你 便于你操作各项数据 77 def run(env,response): 78 "env 请求相关的数据" 79 "response 响应相关的数据" 80 response("200 OK",[]) #"200 OK" 相当于手撸服务器中的 b"HTTP/1.1 200 OK " 81 current_path = env.get("PATH_INFO") 82 2.响应走的时候 自动帮你把数据再打包成符合HTTP 协议格式的样子 再返回给前端 83 if __name__ == '__main__': 84 启动: 85 server = make_server('127.0.0.1',8080,run) 86 # 实时监测127.0.0.1:8080地址 一旦有客户端来连接 会自动加括号调用run方法 87 server.serve_forever() # 启动服务端 88 89 3.封装路由与视图函数对应关系 以及视图函数文件 90 网站用到的所有的HTML文件全部放在templates文件夹 91 1.urls.py 路由与视图对应关系 92 2.views.py 视图函数(视图函数/类) 93 3.templates 模板文件夹 94 4.基于jinja2实现模板的渲染 95 模板的渲染 96 from jinja2 import Template 97 date = f.read() 98 temp = Template(date) 99 res = temp.render(data=user_dict)# 将user_dict传递给前端页面 前端页面通过变量名data就能够获取到该字典 100 后端生成好数据 通过某种方式传递 给前端页面使用(前端页面可以基于模板语法更加快捷简便使用后端传过来的数据) 101 102 103 104 6.Web 框架 105 Python三大主流框架 106 1.Django:大而全 自带的功能特别多 就类似于航空母舰, 107 缺点:有时候过于笨重 108 2.Flask 短小精悍 自带功能特别少 全部依赖于第三方组件 109 flask 框架 第三方组件特别多 如果 把flask 第三方全部加起来 完全可以盖过Django 110 缺点:比较受限于第三方的开发 111 3.Tornado 天生的异步非阻塞框架 速度特别快 能够抗住高并发 112 可以开发新游戏服务器 113 114 115 A.socket 116 B.路由和视图函数 urls 117 C.模板语法 118 119 Django 120 A:用的别人的 wsgiref 121 B:自己写的 122 C:自己写的 123 124 Flask 125 A :用的别人的 wsgiref >>> werkzeug 126 B :自己写的 127 C :用的别人的 jinja2 128 129 Tornado 130 A,B,C全都是自己写的 131 132 7.Django 133 1.注意事项: 134 1.你的计算机名称不能有中文 135 2.文件的命名尽量也不要用中文 136 3.一个pycharm窗口下只能有一个项目 不要把多个项目放在一起 137 138 2.Django版本问题 139 1.x 推荐 140 2.x 141 142 以Django1.11版本为主, 143 3.django下载 144 pip3 install django==1.11.11 145 146 4.如何确认是否下载成功 147 命令行敲 django-admin 148 8.如何创建Django项目 149 命令行式 150 1.命令行创建Django项目 151 django-admin startproject 项目名 152 2.命令行创建django应用(一个应用对应一块独立的功能) 153 1.django-admin startapp 应用名 154 2.python manage.py startapp 应用名 155 3.命令行启动django 156 python manage.py runserver 157 158 (******) 159 ps: 160 1.用命令行创建行django项目不会自动新建templates模板文件夹 161 2.需要你自己手动创建 并且需要你自己去settings.py文件中注册该文件路径 162 163 9.pycharm快捷方式 直接在pycharm中创建 164 165 (******) 166 创建的应用 一定要在settings中注册 才能生效 否则无法识别 167 168 169 9.django主要文件介绍 170 项目名文件 171 同名的项目文件夹 172 settings.py django暴露给用户可配置的文件 173 urls.py 路由与视图函数对应关系 174 manage.py django入口文件 175 应用文件夹 176 migrations文件夹 数据库迁移记录 177 admin.py django后台管理 178 apps.py 应用注册相关 179 models.py orm模型类 180 tests.py 测试文件 181 view.py 视图文件 182 183 10.django小白必会的三板斧 184 HTTPResponse: 返回字符串 185 render 返回html页面 并且能够给该页面传值 186 redirect:重定向 187 188 189 补充: 190 创建app 191 django-admin startapp app名(老男孩学员习惯性的起app01....) 192 python3 manage.py startapp app名 193 app名的文件夹 194 migrations 文件夹 数据库操作记录 195 __init__.py 196 apps.py 注册app相关文件 197 models.py orm模型类相关 198 views.py 视图函数(函数/类) 199 tests.py 测试相关 200 201 app概念 202 django项目就类似于是一所大学,app就是大学里面不同的学院 203 每个学院都有自己独立的功能