python主流框架简介和Django框架的使用

1|0一、手撸简易web框架

  • 通过统一思想,对各个功能或者接口进行统一,越来越像是Django框架的流程,实现了低配版的Django。下面是具体的流程图

  • 具体步骤为:wsgiref库拿到用户的请求内容,我们判断用户请求的链接地址内容,匹配到对应的后端函数,后端函数内部调用数据库得到需要的数据,再拿到html文件进行读取后,之后再把数据通过jinja2模块语法插入html文件中,最后再把修改过后的html文件return出去。wsgiref库把该html文件内容发送回浏览器,浏览器拿到内容后展示在页面上。结束。
  • 基于第三方模块帮你撸
  • 使用了wsgiref库和jinja2库
  • wsgiref库帮我们封装了http协议,并将http的请求头和请求首行变成字典。即将请求内容解包,响应的内容压包。
  • jinja2库专门用来处理后端数据与html页面的交互
  • views.py 里面的放的是函数 我们管这些函数叫视图函数 视图层
    urls.py 里面放的是 路由(后缀)与视图函数的对应关系 路由层
    templates文件夹 里面放的全是html文件 模板层

2|0二、动静态网页

2|11. 静态网页

  • 数据是写死的 万年不变(哪怕改变了 也是人为直接修改)

2|22. 动态网页

  • 数据是实时获取的
    eg:
    1 后端代码动态获取 当前时间
    2 数据是从数据库查询出来的

3|0三、jinja2模板语法

3|11. jinja2的作用

  • 专门用来处理后端数据与html页面的交互

  • 模板语法(极其贴近python后端语法)

  • 让你能够在html页面上 也能够用后端python语法来操作后端传递过来的数据

  • 语法实例:

    <p>{{ userDic }}</p> <p>{{ userDic.username }}</p> <p>{{ userDic['age'] }}</p> <p>{{ userDic.get('hobby') }}</p> <p>{{ userDic.get('hobby').0 }}</p> <p>{{ userDic.get('hobby').1 }}</p> <p>{{ userDic.get('hobby').2 }}</p> {% for user_dic in user_list %} <tr> <td>{{ user_dic.id }}</td> <td>{{ user_dic.username }}</td> <td>{{ user_dic.password }}</td> </tr> {% endfor %}
    • 模板的渲染 将后端传递给html文件的数据 在后端处理好 生成一个完整的html文件的过程
    • 注意 模板的渲染是在后端完成的 跟前端没有关系

4|0四、python主流web框架

4|11. django

  • 大而全 自带的组件和功能非常非常多 ,类似于航空母舰
  • 不足之处:写小项目的时候 可能会比较笨重(大材小用)

4|22. flask

  • 小而精 短小精悍 自带的组件和功能特别特别少 ,类似于游骑兵
  • 基本全部依赖于第三方组件
  • 不足之处:受限于第三方模块的影响比较大
  • 如果将flask所有第三方模块加起来 能够直接盖过django

4|33. tornado

  • 异步非阻塞 这个框架甚至可以用来开发游戏服务器

4|44. 三个框架的对比

a:socket部分 b:路由匹配 c:模板语法 django: a用的别人的wsgiref(django默认的) b自己写的 c自己写的 flask: a用的别人的werkzeug b自己写的 c用的别人的jinja2 Tornado: a,b,c都是自己写的

5|0五、Django 框架

  • django是一个以开发app为主要功能的web框架
  • Django框架的生命周期流程图

5|11. 使用Django时的注意事项

  1. 计算机名称不能有中文

  2. python解释器不要使用3.7版本 推荐使用版本3.4~3.6

  3. 一个pycharm窗口 只能跑一个项目

  4. django版本问题

    • django版本以1.11.11为主(1.11.9~1.11.13)
  5. 如何检验django是否安装成功

    • 命令行敲 django-admin

5|22. 使用Django开发项目

1|0(1)基本使用步骤:

创建Django项目——》创建应用——》配置Django项目的settings文件——》——》导“三板斧”模块(HttpResponse/render/redirect)——》自定义应用功能——》启动Django项目(启动服务端)

1|0(2)具体使用步骤

  1. 通过命令行创建项目
******首先把当前路径切换到你要保存项目的路径****** 1.创建django项目 (即创建文件夹): django-admin startproject 项目名(例如mysite) 2.创建应用(django支持多app开发): python3 manage.py startapp 应用名 3.创建templates文件夹: 创建到与应用文件夹同一级文件夹下,用于存放html文件 4.修改创建的Django项目的settings文件: 1)将创建的app添加到INSTALLED_APPS,(2)并将templates文件夹的路径添加到TEMPLATES的'DIRS',如:'DIRS': [os.path.join(BASE_DIR, 'templates')]。在TEMPLATES中有一个'APP_DIRS': True,此参数表示debug模式。在Linux中,要把它设置为false 5.在应用文件夹的views文件中自定义应用功能函数 此时要导入render,HttpResponse,redirect“三板斧模块”,函数的形参要传入request参数。并将功能函数名添加到Django项目的urls文件的urlpatterns中。 6.启动django项目 首先要切换到Django项目文件夹下 输入命令: python3 manage.py runserver (命令第一个单词根据自己的python的在环境变量的名称来定) 或者输入:python3 manage.py runserver 127.0.0.1:8080
  1. 通过pycharm创建Django项目
  • 这种创建项目的方式要较为简便。他会自动帮我们创建templates文件夹,并且自动把这个文件夹的路径添加到TEMPLATES的'DIRS'中。也就是说我们可以省略方式一中的第三步,和第四步中的第二小步。其他步骤一致。只是不是用命令行创建。

5|33. Django项目各文件的功能

django项目名 项目同名的文件夹 settings.py 暴露给用户可以配置的配置文件 urls.py 路由与视图函数对应关系 manage.py django的入口文件 应用名文件夹 migrations文件夹 所有数据库相关的操作记录 admin.py django admin后台管理 apps.py 注册app使用 models.py 放所有数据库相关的模型类 tests.py 测试文件 views.py 处理业务逻辑的视图函数

5|44. Django基本三板斧

HttpResponse 返回字符串 render 返回html文件 可以给html页面传值 def login(request): user_dic = {'username':'jason','password':'123'} return render(request,'login.html',{'xxx':user_dic}) redirect 重定向 1.直接写你本网站的路径后缀 2.也可以全路径 def home(request): # return redirect('/login') # 重定向 return redirect('https://www.baidu.com') # 重定向

5|55. Django的重启机制

  • Django内部有检测机制 ,实时检测所有文件的变化。当我们在开发项目时,有时候会产生,你代码还没写完 就自动重启报错的情况,不用管。
  • 我们只需要在完善完功能后自己手动再重启一次即可。

__EOF__

本文作者BigSun丶
本文链接https://www.cnblogs.com/Mcoming/p/11908346.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   BigSun丶  阅读(301)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示