Maison > développement back-end > Tutoriel Python > Explication détaillée du framework Web (Flask) en python (exemple de code)

Explication détaillée du framework Web (Flask) en python (exemple de code)

不言
Libérer: 2018-10-24 17:26:57
avant
9006 Les gens l'ont consulté

flask

flask是一个Python编写的Web 微框架,让我们可以使用Python语言快速实现一个网站或Web服务。
Copier après la connexion

Utiliser flask

Lorsque vous écrivez une fonction, si vous voulez que tout le monde l'utilise, vous devez utiliser flask pour atteindre cet objectif.

  1. Importer la classe falsk.Flask

  2. Instancier un objet Flask

  3. Routage de liaison

  4. Exécuter l'application Flask

# 1. 导入Flask类;
from flask import  Flask

# 2. 实例化一个Flask对象;
#     __name__是模块的名称或者包的名称
#     作用: 根据这个参数确定flask应用的路径, 从而快速查找模板和html文件的默认路径;
#     模块就是python文件; 包就是目录(跟普通目录多加一个__init__.py);
#
app = Flask(__name__)

# 3-1.基本路由:通过路由绑定一个视图函数
#   @app.route('/'): 告诉Flask哪个URL才能出发对应的函数, 又称为路由;
#   对应定义了一个视图函数, 也就是返回给用户浏览器显示的内容;
@app.route('/')
def index():
    return  "<h1>hello world</h1>"

@app.route('/login/')
def login():
    return  "login"

# 4. 运行Flask应用, 可以指定ip和端口;
# '0.0.0.0' 所有的IP都可以访问到;
app.run('0.0.0.0', 9000)
Copier après la connexion

Explication détaillée du framework Web (Flask) en python (exemple de code)

Explication détaillée du framework Web (Flask) en python (exemple de code)

Routage et règles variables

dans le framework flask, le route représente l'URL demandée par l'utilisateur et trouve sa fonction de traitement correspondante
Règles de routage commun

  1. Une partie de l'url peut être marquée comme variable

  2. Types courants de variables dans le routage en flacon :

         int, string, float, path, uuid
    Copier après la connexion
from flask import Flask, request

app = Flask(__name__)
@app.route('/<id>/comments/')
def comment1(id):
    return "Comment id: %s" %(id)

@app.route('/welcome/<user>/')
def welcome(user):
    app.logger.debug('this is a debug')
    app.logger.warning('this is a warn')
    return user + "用户,欢迎来到SheenStar的主页"

# 特殊的url地址: http://www.baidu.com/query?id=13&name=clotho
@app.route('/query')
def query():
    # 获取url地址里面key值对应的value值;
    id = request.args.get('id')
    name = request.args.get('name')
    return "id: %s, name: %s" %(id, name)
app.run()</user></id>
Copier après la connexion

Explication détaillée du framework Web (Flask) en python (exemple de code)
Explication détaillée du framework Web (Flask) en python (exemple de code)

Explication détaillée du framework Web (Flask) en python (exemple de code)

URL inversée

Obtenir les données de la requête HTTP

Lorsque le client accède au programme serveur via l'URL, il enverra deux types de messages au serveur, l'un est l'en-tête de la requête HTTP et l'autre les données de la requête.

1. 常见HTTP请求方法:
GET: 1). 获取信息 2). 提交的信息会展示在url: http://www.wewtos.org/login?user=sheen&passwd=star
POST:1). 提交信息, 不在url里面展示, 有利于数据的安全性;

2. 默认路由接受的请求方法为_____get____?
如何指定接收多个HTTP请求方法?
路由: @app.route('/login/', methods=['GET', 'POST'])
视图函数: def login():

3. 如何判断用户请求的HTTP方法?   request.method
 如何获取用户POST请求提交的表单数据? request.form['user']
 
4. 模板渲染(jinja2):
why?    python中生成html不易修改与维护, 所以将html的内容独立到templates目录中;
how?
1). 去当前项目目录下寻找templtes是否存在?再去判断templates目录下是否有login.html文件?
2). 读取这个login.html文件的内容, 作为render_template的返回值;
3). 最终返回给用户浏览器;
render_template('login.html')

5. 重定向和错误?
redirect
return  render_template('login.html', message="用户名或者密码错误")
Copier après la connexion

Exemple : Saut de connexion

#这里的index.html、login.html、404.html是需要自己提前写好的可访问网页
#所有的模板需要放在templates目录下
from flask import Flask, request, render_template, redirect, url_for, abort

app = Flask(__name__)

@app.route('/')
def index():
    return render_template('index.html')

@app.route('/login/', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        print(request.form)
        # 1. 如何获取到用户提交的信息呢?
        user = request.form['user']
        passwd = request.form['passwd']

        # 2. 判断用户名和密码是否正确
        if user == 'root' and passwd =='sheen':
            # 如果登陆成功, 跳转到主页;
            return redirect(url_for('index'))
        else:
            # 如果登陆失败, 重新登陆;
            return  render_template('login.html', message="用户名或者密码错误")
    else:
        # 用户是GET请求, 返回登陆的html页面
        # 1. 读取login.html文件的内容
        # 2. 将读取的内容返回给用户界面
        return render_template('login.html')

# 404异常处理: 类似于捕获异常
@app.errorhandler(404)
def not_found(e):
    return  render_template('404.html')

# 抛出异常
@app.route('/user/<user_id>/')
def user(user_id):
    if 0<int app.run><p style="text-align: center;"><span class="img-wrap"><img src="https://img.php.cn//upload/image/438/648/136/1540373077718507.png" title="1540373077718507.png" alt="Explication détaillée du framework Web (Flask) en python (exemple de code)"><br></span></p>
<p style="text-align: center;"><img src="https://img.php.cn//upload/image/410/199/933/1540373095508604.png" title="1540373095508604.png" alt="Explication détaillée du framework Web (Flask) en python (exemple de code)"><span class="img-wrap"></span> </p>
<p class="comments-box-content"></p></int></user_id>
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:segmentfault.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal