一、Flask介绍(轻量级的框架,非常快速的就能把程序搭建起来)

Flask 主要特点小而轻,原生组件几乎为0, 三方提供的组件请参考Django 非常全面,属于短小精悍型框架

Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请求并对请求进行预处理,然后触发Flask框架,开发人员基于Flask框架提供的功能对请求进行相应的处理,并返回给用户,如果要返回给用户复杂的内容时,需要借助jinja2模板来实现对模板的处理,即:将模板和数据进行渲染,将渲染后的字符串返回给用户浏览器。

Django和Flask的对比:

Flask:
1.轻,短小精悍
2.快,三行代码开启服务
缺点:
1.组件大部分来源于三方,flask-admin,flask-session
2.flask大版本更新,组件更新速度慢 Django:
1.大而全,admin,models,Form,中间件,session
2.一个框架解决所有问题
缺点:
1.一旦启动,所有资源全部加载,用不到的,浪费了
2.太大了,结构复杂
3.所有的组件,全部由Django自身控制

二、简单使用

先按照那个flask组件

pip3 install flask

最简单的flask(SB写法为了让初学者一目了然):

from flask import Flask  #导入flask

app = Flask(__name__)  #实例化一个Flask对象
app.run() # 然后运行你的flask组件

flask的默认端口是5000不是django的8000了

flask的路由分发

flask的路由分发不是我们以前的django中的url来分发了 是需要类似于装饰器的方法那种来分发视图函数

from flask import Flask
app = Flask(__name__) #实例化一个Flask对象
@app.route("/") #这个是分发路由视图 你输入的url
def index():
return "helloword" if __name__ == "__main__": # python中的模块用法 app.run("127.0.0.1",9527)

flask输出hello  word

from flask import Flask

ap = Flask(__name__)

@ap.route("/")
def index():
return "hello word" if __name__ =="__main__":
ap.run()

jinjia2 语法:

因为:Flask是一个基于Python开发并且依赖jinja2模板和 所以我们要时刻注意jinjia2语法

因为flask不像我们的django建立的时候就什么都齐全了 那么我们就要把信息都设置为jinjia2的

pycharm设置jinjia2:

1:右击flask文件选中:Mark Directory as

2:

然后选中其中的jinjia2语法支持就可以让你的文件都支持jinjia2了

3

界面的交互与渲染:

flask的后端界面的html想要渲染到前端界面需要用Markup django用的是makr_save并且 然后你的界面的渲染是render_template

from flask import Flask,Markup,render_template

app = Flask(__name__)  #实例化

STUDENT_DICT = {
1: {'name': 'Old', 'age': 38, 'gender': '中'},
2: {'name': 'Boy', 'age': 73, 'gender': '男'},
3: {'name': 'EDU', 'age': 84, 'gender': '女'},
}
@app.route("/index/") # 分发的路由视图
def index():
btn = "<a href=''>添加学生</a>" btn = Markup(btn) #让你的后端html标签不会被浏览器的安全策略阻止 return render_template("index.html",stu=STUDENT_DICT,btn = btn) #把你的信息传递到index前端界面 if __name__ == "__main__": app.run() # 设置你的端口

我们还可以在前端使用jinjia2的直接函数执行方法

macro对你的模板进行占位

{% macro func(ty,na) %}

    <input type="{{ ty }}" name="{{ na }}">  /* 这个好比占位符*/
{% endmacro %} {{ func("text","username") }} /*这个是对你的内容进行func的渲染*/

因为Flask是一个精简的模块那么我们需要随时随地准备好导入模块

你的method接收值的时候需要用的是methods:

默认GET请求,如果改写了methodsGET一定要加上

@app.route("/login/", methods = ["POST","get"])  # 把你的请求方式也写进去

你的前端的请求数据如果是post并且是FormDate的话就从form中取值

    if request.method == "POST":
username = request.form["username"] # 去取你的form请求提交的信息 并且是FormData数据 格式就可以获取

你如果使用session值的时候必须要把  secret_key 要指定 就是代表捏这个session返回给用户的随机key是多少

app.secret_key = "你是大sb"  # 当你设置session的时候必须要带着这个secret_key因为这个好比你的所有的值  这个是给你的session设置一个字符串
@app.route("/login/", methods = ["POST","get"])  # 把你的请求方式也写进去
def login():
if request.method == "GET": # 导入你的request模块
return render_template("login.html") # 如果是get就走这个
if request.method == "POST":
username = request.form["username"] # 去取你的form请求提交的信息 并且是FormData数据 格式就可以获取
password = request.form.get("password")
print(username,password) if username == "laowang" and password == "sb":
session["user"] = username # 把你的信息写入session中 设置
return redirect("/index/") # 登陆成功跳转到index界面
else:
return render_template("login.html", msg="用户名或密码错误")

全局函数:

我们也可以定义一个全局的函数在任意的前端界面都可以使用它;

@app.template_global()

函数

这样任意的前端界面都可以使用这个函数了

@app.template_global()
def a_b(a,b):
return a*b

前端界面;

<body>

{{ a_b(1,3) }}

</body>

然后用其他的函数去访问这个界面就会出现你全局函数中的内容

全局条件函数:filter

@app.template_filter()

def a_b_c(a,b,c):
return a+b*c

前端界面:

{{ 1|a_b_c(2,3) }}  # 得到7 第一个参数后面加上函数名在跟上后两个参数

flask 中的模块继承也是和django中的一样  需要extends  然后在block块级标签

{% extends "index.html" %}
{% block content %}
我是这个页面的东西
{% endblock %}

初始Flask的更多相关文章

  1. Flask 之东方不败一

    1,flask的初始 flask是Python的一个轻量级的web框架,相当于django而言. 知识点Python 三大主流web框架的对比 1.Django 主要特点是大而全,集成了很多组件,例如 ...

  2. Flask中路由系统以及蓝图的使用

    一.Flask的路由系统 1.@app.route()装饰器中的参数 methods:当前URL地址,允许访问的请求方式 @app.route("/info", methods=[ ...

  3. 第一篇 Flask基础篇之(配置文件,路由系统,模板,请求响应,session&cookie)

    Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请求并对请求进行预处理,然后 ...

  4. Flask - Flask的蓝图(BluePrint)

    目录 Flask - Flask的蓝图(BluePrint) 一. 初始Flask蓝图 进阶Flask蓝图 使用蓝图做一个增删改查 1.使用蓝图进行web应用搭建: 2.使用Flask蓝图,查看学生信 ...

  5. 第一篇 Flask初始

    Python 现阶段三大主流Web框架 Django Tornado Flask 对比 1.Django 主要特点是大而全,集成了很多组件,例如: Models Admin Form 等等, 不管你用 ...

  6. flask --- 01 .初始

    一. 四种web框架比较 Django : 优点 - 大而全所有组件都是有组织内部开发高度定制化 教科书级别的框架 缺点 - 大到浪费资源,请求的时候需要的资源较高 Flask : 优势 - 小而精, ...

  7. flask 初始

    一.flask安装 这里提供两种安装方式: 第一种: pip3 install flask 第二种: pip3 install -i https://pypi.douban.com/simple/ f ...

  8. Flask备注4(Structure)

    Flask备注4(Structure) package 通过Flask可以非常简单的通过一个module(一个py文件)创建一个简单的application.这种简单程序的文件结构如下: /youra ...

  9. Flask —— 使用Python和OpenShift进行即时Web开发

    最近Packtpub找到了我,让我给他们新出版的关于Flask的书写书评.Flask是一个很流行的Python框架.那本书是Ron DuPlain写的<Flask 即时Web开发>.我决定 ...

随机推荐

  1. WebBench压力测试工具

    Webbench是有名的网站压力测试工具,它是由 Lionbridge公司(http://www.lionbridge.com)开发. Webbech能测试处在相同硬件上,不同服务的性能以及不同硬件上 ...

  2. 3-nginx.conf参数配置

    –#定义Nginx运行的用户和用户组 –user www www; –#nginx进程数,建议设置为等于CPU总核心数. –worker_processes8; –#全局错误日志定义类型,[ debu ...

  3. php中接收参数,不论是来自GET还是POST方法

    不多说,直接上代码, 其实也就是先用GET的方法去获取,如果值为空,在用POST方法去获取 写下来是为了方便和备忘 function getParam($str){       if ( isset( ...

  4. prometheus安装、使用

    本文主要参考https://songjiayang.gitbooks.io/prometheus/introduction/what.html 二进制包安装 我们可以到 Prometheus 二进制下 ...

  5. .net Core学习笔记之MemoryCache

    .NET Core支持多种不同的缓存,其中包括MemoryCache,它表示存储在Web服务器内存中的缓存:     内存中的缓存存储任何对象; 分布式缓存界面仅限于byte[] 1:在.net co ...

  6. DOM-使用节点

    节点类型 DOM规定:整个文档是一个文档节点,每个标签是一个元素节点,元素包含的文本是文本节点,元素的属性是一个属性节点,注释属于注释节点,如此等等: 每个节点都有一个nodeType属性,用于标明节 ...

  7. Eureka Server项目启动报错处理

    Eureka Server项目启动报错处理 Eureka是一个服务发现组件,提供服务注册.发现等注册中心功能,使用spring boot启动eureka应用时出现报错: 20:36:17.646 [r ...

  8. Linux root用户不能通过SSH连接的问题

    http://jingyan.baidu.com/article/fd8044fad48fc95031137a85.html 最近在虚拟机安装Ubuntu之后,通过普通ssh远程连接的时候明明输入了正 ...

  9. 二十、curator recipes之NodeCache

    简介 Curator的NodeCache允许你监听一个节点,当节点数据更改或者节点被删除的时候将会触发监听. 官方文档:http://curator.apache.org/curator-recipe ...

  10. 浅谈JVM-图解类加载机制

    一.目录 二.类加载机制流程 1.什么是类加载机制? JVM把class文件加载到内存里面,并对数据进行校验.准备.解析和初始化,最终能够被形成被JVM可以直接使用的Java类型的过程. 2.类加载流 ...