Flask基础
Posted lennie-luo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flask基础相关的知识,希望对你有一定的参考价值。
1、静态网页与动态网页
- 静态网页:无法与服务器进行交互的网页
- 动态网页:能够与服务器进行交互的网页
2、WEB与服务器
- WEB:网页(html,CSS,JS)
- 服务器:硬件+软件
- 硬件范畴:一台主机
- 软件范畴:处理用户请求request并给出响应response的程序(APACHE,TOMCAT,nginx,IIS......)
3、框架
向程序员隐藏了处理 HTTP 请求和响应相关的基础代码。--路由和模板
4、Flask框架
- 基于python编写,依赖于Jinja2模板引擎和Werkzeug WSGI服务的一个微型web框架
- 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基础的主要内容,如果未能解决你的问题,请参考以下文章