Flask入门(一)

来源:互联网 发布:华为机顶盒安装软件 编辑:程序博客网 时间:2024/05/17 04:06

知识背景:Python 基础知识;零Flask框架基础。

Url 的认识:

Url协议分类

1、如果是http协议,那么浏览器会使用80端口。
2、如果是https协议,那么浏览器会使用443端口。

Url详解

1、一个url由以下几部分组成:
scheme://host:port/path/?query-string=xxx#anchor
其中:

  • scheme:协议名
  • host:主机名
  • port:端口
  • path:查找路径
  • query-string:查询字符串
  • anchor:锚点

web服务器和应用服务器以及web应用框架

: 1、web服务器:处理http请求,相应静态文件。(Apache, Nginx, IIS)。
2、应用服务器:处理逻辑,比如php,python的代码,不能通过web服务器,只能通过应用服务器,常见的应用服务器有uwsgi,tomcat(java用)等。
3、web应用框架:封装了常用web功能的框架(Flask,Django)(SSH(java用))等。

第一个Flask程序

# encoding : utf-8from flask import Flaskapp = Flask(__name__)@app.route('/')def hello_world():    return 'Hello, World!'if __name__ == '__main__':#这行意思是:如果当前这个文件是作为入口程序运行的话,就执行app.run()    app.run()

Debug模式

启动方法:在app.run()中传入关键字参数’debug’。app.run(debug = True),就进入了Debug模式。

Debug 模式的两大功能:

  • (1)当程序出现问题的时候可以在页面中查看到错误信息和出错的位置。
  • (2)只要修改了项目中的‘.py’文件,程序就会自动加载,不需要手动重新启动服务器。

使用配置文件config.py

import configapp.config.from_object(config)#然后在新建的config.py中设置DEBUG=True#即可#此外还有很多其他参数后期都是放在配置文件中,比如SECRET_KEY=SQLALCHEMY=#后面会提到

Url传参数

参数的作用:
可以使用一样的url,但是可以指定不同的参数,来加载不一样的内容。
在Flask中的使用,以article为例:
@app.route('/article/<id>')                       #↑参数需要放在'<>'中def article(id):#←视图函数中需要放和url中的参数同名的参数    return u'您请求的参数是:%s' % id

反转Url

反转Url的作用:
- 1、在页面重定向的时候,一般会使用url反转
- 2、在模板中也会使用url反转。

一个小例子:

from flask import Flask , url_forapp = Flask(__name__)@app.route('/')def index():    #通过my_list这个名字指向my_list的url    print (url_for('my_list'))    #通过article这个名字和ABC这个id指向article在参数为ABC情况下的页面    print (url_for('article', id = 'ABC'))    return 'Hello, World!'@app.route('/list/')def my_list():    return 'list'@app.route('/article/<id>')def article(id):    return u'您所请求的参数是:%s' % idif __name__ == '__main__':    app.run()

页面跳转和重定向

用处:在用户访问一些需要登录的页面的时候,可以让他重定向到登录页面。

# encoding : utf-8from flask import Flask , url_for ,redirectapp = Flask(__name__)@app.route('/')def index():     #&&***重定向代码实现***&&    login_url = url_for('login')    return redirect(login_url)      #&&***重定向代码实现***&&    return '这是页面'@app.route('/login')def login():    return '这是登录页面'@app.route('/question/<is_login>/')def question(is_login):    if is_login == '1':        return '这是发布页面'    else:        return redirect(url_for('login'))if __name__ == '__main__':     app.run(debug=True)