Flask基础

Posted lennie-luo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flask基础相关的知识,希望对你有一定的参考价值。

1、静态网页与动态网页

  • 静态网页:无法与服务器进行交互的网页
  • 动态网页:能够与服务器进行交互的网页

2、WEB与服务器

  • WEB:网页(html,CSS,JS)
  • 服务器:硬件+软件
  1. 硬件范畴:一台主机
  2. 软件范畴:处理用户请求request并给出响应response的程序(APACHE,TOMCAT,nginx,IIS......)

3、框架

程序员隐藏了处理 HTTP 请求和响应相关的基础代码。--路由和模板

4、Flask框架

  1. 基于python编写,依赖于Jinja2模板引擎Werkzeug WSGI服务的一个微型web框架
  2. MTV框架模式
  • M:Model,模型层,数据库建模,便于数据库交互(ORM框架,sqlalchemy)
  • T:Templates,模板层,用于处理用户显示的内容,如HTML
  • V:Views,视图层,处理用户请求并给出响应(路由和数据处理逻辑)

         3.非python的框架模式:MVC(Model,Views,Controller)

5、搭建一个简单的web应用

from flask import Flask

# 将当前运行的主程序构建成Flask的应用,以便于接收用户请求,并给出响应
app = Flask(__name__)


@app.route(‘/‘)  # Flask中的路由定义,运行此py文件时,在浏览器地址栏输入http://localhost:5000/即可显示return的响应内容
def index():
    """视图函数,必须要return一个响应对象"""
    return "<h1>this is my first app!</h1>"


if __name__ == "__main__":
    # 启动Flask服务,默认端口5000,debug调试模式研发时使用
    app.run(debug=True)

6、路由route

url与其对应处理函数逻辑的映射关系

# 指定类型的带参路由
@app.route(‘/page/<int:num>‘)  # 地址栏传参(指定int)给视图函数,‘<path:param>‘str,可以带/
def show(num):
    return "<h1>这是第%d页。</h1>" % num

# 多url路由
@app.route(‘/‘)
@app.route(‘/index‘)
@app.route(‘<int:page>‘)
def index(page=None):
    if page == None:
        page = 1
    return "<h1>这是第%d页。</h1>" % page

#指定请求方法的路由
@app.route(‘/page‘, methods=[‘GET‘,‘POST‘])  # 只有[]中有的方法才能发送请求
def show(page):
    return "<h1>这是第%s页。</h1>" % page

url反向解析url_for(‘fun‘,arg1=value1,arg2=value2)

# 指定类型的带参路由
@app.route(‘/page/<int:num>‘)  # 地址栏传参(指定int)给视图函数,‘<path:param>‘str,可以带/
def show(num):
    return "<h1>这是第%d页。</h1>" % num


# url反向解析:通过视图函数的名称自动生成该函数的访问路径
# 使用函数url_for(‘函数名‘,‘带参路由关键字传参‘),还能反向解析静态文件如:url_for(‘statuc‘,filename=‘style.css‘)
# 应用如:生成超链接从当前页面跳转到指定页面
@app.route(‘/login‘)
def login():
    from flask import url_for
    url = url_for(‘show‘, num=1)
    res = "<a href = ‘" + url + "‘>"+"返回第1页"+"</a>"
    return res

7、模板Templates

        模板是一个包含响应文本的文件(通常是HTML文件),该文件中允许包含“占位变量”来表示动态的内容,其具体值在请求中才能知道。“占位变量”最终会被真是值替代,模板最终也会被解析成响应的字符串,这一过程称为渲染。Flask本身没有模板功能,实际依赖于jinja2模板引擎。

        默认情况下,Flask会在程序文件夹中的templates文件夹中寻找模板。

  在视图函数中,通过return render_template(‘xxx.htm’,arg1=value1,arg2=value2)将模板渲染成字符串再响应给客户端,参数1是templates文件下的html文件,参数2-n是要传递给模板动态显示的替换变量占位符的值。

  

 

以上是关于Flask基础的主要内容,如果未能解决你的问题,请参考以下文章

12_关于flask中的宏

python flask 基础入门

Flask之模板之宏继承包含

flask基础1

flask基础之app初始化

flask基础知识