Django 框架 # 51

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     每个学院都有自己独立的功能
readme
原文地址:https://www.cnblogs.com/llx--20190411/p/11544013.html