一、手撸简易web框架

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

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

    urls.py 里面放的是 路由(后缀)与视图函数的对应关系 路由层

    templates文件夹 里面放的全是html文件 模板层

二、动静态网页

1. 静态网页

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

2. 动态网页

  • 数据是实时获取的

    eg:

    1 后端代码动态获取 当前时间

    2 数据是从数据库查询出来的

三、jinja2模板语法

1. 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文件的过程
    • 注意 模板的渲染是在后端完成的 跟前端没有关系

四、python主流web框架

1. django

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

2. flask

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

3. tornado

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

4. 三个框架的对比

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

五、Django 框架

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

1. 使用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

2. 使用Django开发项目

(1)基本使用步骤:

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

(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'中。也就是说我们可以省略方式一中的第三步,和第四步中的第二小步。其他步骤一致。只是不是用命令行创建。

3. Django项目各文件的功能

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

4. 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. Django的重启机制

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

python主流框架简介和Django框架的使用的更多相关文章

  1. 自创Web框架之过度Django框架

    目录 自创Web框架之过度Django框架 软件开发架构 HTTP协议 Web框架之"撸起袖子加油干" Web框架之通过wsgiref加油干 封装优化处理 动静网页 jinjia2 ...

  2. DRF框架之使用Django框架完成后端接口(API)的定义

    学习DRF框架,首先我们就需要明白为什么要学习这个框架. 接下来我们就先用原生的Django框架来定义一个符合RESTful设计方法的接口(API). RESTful接口的需求如下: GET /boo ...

  3. Selenium3+python自动化010-UnitTest框架简介和单元测试框架使用

    一.UnitTest介绍 unittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过, ...

  4. Spring笔记——Spring框架简介和初次框架配置

    Spring简介 Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Deve ...

  5. Pyhton-Web框架之【Django】

    一.什么是web框架 框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮你快速开发特定的系统,简单地说,就是你用别人搭建好的舞台来做表演. 对于所有的 ...

  6. Django框架——基础教程(总)

    1. Django简介 Python下有许多款不同的 Web 框架.Django是重量级选手中最有代表性的一位.许多成功的网站和APP都基于Django. Django是一个开放源代码的Web应用框架 ...

  7. Django框架01 / http协议、web框架本质

    Django框架01 / http协议.web框架本质 目录 Django框架01 / http协议.web框架本质 1.http协议 1.1 http协议简介 1.2 什么是http协议 1.3 H ...

  8. 第三百零三节,Django框架介绍——用pycharm创建Django项目

    Django框架介绍 Django是一个开放源代码的Web应用框架,由Python写成.采用了MVC的软件设计模式,即模型M,视图V和控制器C.它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内 ...

  9. 一 Django框架介绍——用pycharm创建Django项目

    Django框架介绍 Django是一个开放源代码的Web应用框架,由Python写成.采用了MVC的软件设计模式,即模型M,视图V和控制器C.它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内 ...

随机推荐

  1. 阶段3 2.Spring_04.Spring的常用注解_5 自动按照类型注入

    运行出现了空指针异常 @Autowired 注解出现的位置 AutoWired的代码 常用的就是写类上和方法上. 运行测试,刚才运行是一个空指针异常 也就是通过Autowired 这个accountD ...

  2. ibatis使用iterate实现批量插入insert正确写法

    由于想批量入库提升效率,最近实现了ibatis的批量插入,结果一直报错 :StringIndexOutOfBoundsException ,原来是value中的格式不正确. 本人邮箱:techqu@1 ...

  3. Azure Data Lake Storage Gen2实战体验

    相较传统的重量级OLAP数据仓库,“数据湖”以其数据体量大.综合成本低.支持非结构化数据.查询灵活多变等特点,受到越来越多企业的青睐,逐渐成为了现代数据平台的核心和架构范式. 作为微软Azure上最新 ...

  4. c++ 指针(三)

    指针 (6)传递指针给函数 只需要简单地声明函数参数为指针类型即可 #include <iostream> #include <ctime> using namespace s ...

  5. 【HANA系列】SAP HANA XS创建XSJOB后台执行

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA XS创建XSJ ...

  6. Myeclipse下配置SVN报错问题 svn: E175002: java.lang.RuntimeException: Could not generate DH keypair(转)

    转:http://blog.csdn.net/yulong_1988/article/details/51459936 在myeclipse下安装svn插件,出现了Could not generate ...

  7. Dubbo从入门到精通

    1.在Dubbo中注解的使用 2.Dubbo启动时qos-server can not bind localhost:22222错误解决 3.Dubbo配置方式详解

  8. 2019CCPC厦门游记

    距离上次2018CCPC吉林打铁一年有余,这次的厦门也是我们team拿到的第一块区域赛牌子,写一篇博客留念一下QAQ. 作为弱校的菜鸡队,我们提前两天就来到厦门,不得不说刚到厦门的两天还是很快乐的,住 ...

  9. 2019 Multi-University Training Contest 8 - 1006 - Acesrc and Travel - 树形dp

    http://acm.hdu.edu.cn/showproblem.php?pid=6662 仿照 CC B - TREE 那道题的思路写的,差不多.也是要走路径. 像这两种必须走到叶子的路径感觉是必 ...

  10. iframe 页面嵌套

    由于目前项目基础界面,业务逻辑一样,只是细微有所差别.因而使用iframe来进行定制化处理. 如何来区分不同需求不同页面呢? 最初是想通过url携带参数来进行区分,但是随着需求变多,定制化也越来越细微 ...