1. 目录结构

一般情况下,Django很系统、统一。Flask项目目录风格不同一,即使用上了蓝图。

2. 数据库迁移

Flask要用第三方extensions,而Django自带,这个很方便。

3. 模块化

Flask是用蓝图。Django可以自动生成python manage.py startapp <app_name>,并在Django的项目的settings那个INSTALLED_APPS字典里注册一下就好。

4. 命令行

Django的命令行初始更多功能,例如migrate。但Flask自定义命令很简单。

启动方面,Flask有两种,一种是通过manage.py帮助脚本去运行,另一种是export环境变量,用flask run来运行,官方文档建议后面这种,1.02版本还新增了一个环境变量FLASK_ENV。因为Flask依赖5个包,其中一个是click,所以可以自定义CMD。

@app.cli.command()
def hello():
click.echo('Hello, xxx!') flask hello

5. 新建模型方面差不多。

它们都是继承ORM的Model。建模之后都是要加入到数据库中,就是做一个数据库迁移操作。

Flask是传入想要创建的字段类型到model.Column,而Django有明显的类给你使用,例如models.charField。

6. 反向获取URL

urlpatterns = [
path('', views.post_list, name='post_list')
]

这个name,相当于Flask的endpoint。意思都是通过反向这个名字,reverse(name)去获得URL。

// 在模板中
<a href="{% url 'post_detail' pk=post.pk %}">{{ post.title }}</a></h1> //Django
{% url_for('") %} // Flask

7. 路由

Django的路由和view functions是分开写的:urls.py, views.py。而Flask是都写在views.py中,view function和url写在一起(以装饰器的形式app.route)。

因为Django是MTV模式。其实和MVC模式差不多。大致上是Controller变成了views.py和urls.py。

Flask命令行中使用flask routes可以查看URL与view function的映射关系。代码中使用app.url_map可以查看。

8. 中间件使用

Django在settings.py里设置,

Flask要初始化中间件实例,然后传入app(Flask)实例。

9. Request对象

Django中,每个view function或者CBV中都要写一个request参数。而Flask的view function则不用,因为

from flask import request

# 这个request是对每个请求独立的,就像g变量。值得研究底层原理(Flask通过本地线程( thread local) 技术将请求对象在特定
的线程和请求中全局可访问)

10. 限制http请求方法

Flask

@app.route('/hello', methods=['GET', 'POST'])
def hello():
return '<h1>Hello, Flask!</h1>'

Django

from django.views.decorators.http import require_http_methods
@require_http_methods(['GET','POST'])
def login(request):
pass

11. 钩子函数

Flask,加钩子装饰器

@app.before_request
def do_something():
pass # 这里的代码会在每个请求处理前执行

Django,通过中间件

Flask, Django - 区别,个人体会的更多相关文章

  1. 续--Flask, Django - 区别

    1. 目录结构         参考:https://blog.csdn.net/yang9520/article/details/79740374 中文文档(http://docs.jinkan.o ...

  2. Django和Flask的区别以及运行流程

    Django: Python Web框架里比较有名当属Django,Django功能全面,它提供一站式解决方案,集成了MVT(Model-View-Template)和ORM,以及后台管理.但是缺点也 ...

  3. flask Django保存session区别

    '''Django中,session保存在服务端的数据库中,数据库中保存请求用户的所有数据,服务端数据中{'随机字符串':加密后的客户相关信息}请求完成后,把随机字符串作为值,返回给客户端,保存在客户 ...

  4. django和flask的区别

    转载至https://blog.csdn.net/tulan_xiaoxin/article/details/79132214 (1)Flask Flask确实很“轻”,不愧是Micro Framew ...

  5. python框架(flask/django/tornado)比较

    一.对外数据接口 三者作为web框架,都是通过url映射对外的接口 flask:以decorator的形式,映射到函数中 django:以字典形式,映射到函数 tornado: 以字典形式,映射到类中 ...

  6. Django框架(四)-- 路由控制:有名/无名分组、反向解析、路由分发、名称空间、伪静态、APPEND_SLASH、不同版本的Django区别、Django虚拟环境搭建

    路由控制 一.简单路由配置 url(r'^booklist$', views.booklist) 第一个参数是正则表达式,第二个参数是视图函数 每个正则表达式前面的'r' 是可选的但是建议加上.它告诉 ...

  7. Django框架(四)—— 路由控制:有名/无名分组、反向解析、路由分发、名称空间、伪静态、APPEND_SLASH、不同版本的Django区别

    目录 路由控制 一.简单路由配置 二.无名分组 三.有名分组 四.反向解析 五.路由分发 六.名称空间(一般不使用) 七.伪静态 八.Django 2.x和Django 1.x 路由层区别 九.APP ...

  8. 全栈的自我修养: 001环境搭建 (使用Vue,Spring Boot,Flask,Django 完成Vue前后端分离开发)

    全栈的自我修养: 环境搭建 Not all those who wander are lost. 彷徨者并非都迷失方向. Table of Contents @ 目录 前言 环境准备 nodejs v ...

  9. 真正搞明白Python中Django和Flask框架的区别

    在谈Python中Django框架和Flask框架的区别之前,我们需要先探讨如下几个问题. 一.为什么要使用框架? 为了更好地阐述这个问题,我们把开发一个应用的过程进行类比,往往开发一个应用(web应 ...

随机推荐

  1. Django的安装、使用详解、自动化测试应用以及程序打包

    1.Django的安装 pip install Django 验证 Django 是否能被 Python 识别 >>> import django >>> prin ...

  2. sqli-libs(38-41(堆叠注入)关)

    补充知识:堆叠注入(Stacked injections) 从名词的含义就可以看到应该是一堆sql语句(多条)一起执行.而在真实的运用中也是这样的,我们知道在mysql中,主要是命令行中,每一条语句结 ...

  3. 后台怎么区分接口要写在哪个service类中呢(根据service服务区分)

    1,明确页面要实现什么功能,则页面对应的controller要写对应的controller方法 2,这个功能最终要由谁实现完成,在对应的service中药实现这个功能 3,这个接口的实现就写在最终完成 ...

  4. Caffe实例

    下载链接以及说明:  1.caffe代码按照官方教程下载windows分支下面的就可以了(https://github.com/BVLC/caffe/tree/windows). 2.cmake(ht ...

  5. 1.什么是Mybatis?

    在学习之前我们要回顾以下知识 JDBC Mysql java基础 Maven Junit 什么是 MyBatis? MyBatis 是一款优秀的持久层框架MyBatis 避免了几乎所有的 JDBC 代 ...

  6. Win2012或Win2016安装网卡

    在电脑安装了Windows Server 2012或者2016等系统之后,可能面临的很大的问题就是没有有线或无线网卡. 1.安装网卡的功能 2.一直到“功能”这部分,选择安装“DirectPlay”和 ...

  7. Docker - Dockerfile - 常见命令简介

    概述 感觉是个 比较重要的东西 有个疑问 我是先讲 docker build 还是 先讲 Dockerfile 穿插讲 docker build 最基本的东西 原理 -t -f docker file ...

  8. Java - JVM - jinfo

    1. 概述 jinfo java 运行时的配置工具 查看 设置 2. 环境 idea 2018.2 java jdk8 3. 准备 写个 死循环 概述 需要查看 jvm 的信息, 必须有个运行中的 j ...

  9. jumpserver sudo 权限控制模板

    sudo 权限控制,常用 ALL,!/bin/bash,!/bin/tcsh,!/bin/su,!/usr/bin/passwd,!/usr/bin/passwd root,!/bin/vim /et ...

  10. 大小端(MSB & LSB)

    谈到字节序的问题,必然牵涉到两大CPU派系.那就是Motorola的PowerPC系列CPU和Intel的x86系列CPU.PowerPC系列采用big endian方式存储数据,而x86系列则采用l ...