zoukankan      html  css  js  c++  java
  • Flask之快速入门

    一、初识Flask

    1、安装Flask

    (flask_study) C:UsersAdministrator>pip install flask

    2、简单实例

    from flask import Flask
    
    #实例化Flask对象
    app = Flask(__name__)
    
    @app.route('/')
    def index():
        return "index"
    
    if __name__ == '__main__':
        app.run()

    这样简单的几行代码就可以进行运行,默认启动的端口时5000端口。

    二、快速入门

    学过Django框架的小伙伴知道Djanog是很全面的,包括有自己的模板等功能,那么在Flask中也有。现在可以通过一个简单的登录实例来进行学习了解一下。

    from flask import Flask,request,render_template,redirect,session,url_for
    import functools
    
    app = Flask(__name__)
    
    user_data = {
        1:{'name':'张三','age':23,'gender':''},
        2:{'name':'李四','age':18,'gender':''},
        3:{'name':'王五','age':35,'gender':''},
    }
    
    def auth(func):
        @functools.wraps(func) #保留func元信息
        def innder(*args,**kwargs):
            user = session.get('user_info')
            if not user:
                return redirect(url_for('login'))  # 反向生成url
            return func(*args,**kwargs)
        return innder
    
    @app.route('/detail/<int:id>',methods=['GET'])
    @auth
    def detail(id):
        user = user_data.get(id)
        return render_template('detail.html',user=user)
    
    @app.route('/index')
    @auth
    def index():
        return render_template('index.html',user=user_data)
    
    @app.route('/login',methods=['GET','POST'],endpoint='login')
    def login():
        if request.method == 'GET':
            return render_template('login.html')
        else:
            user = request.form.get("user")
            pwd = request.form.get("pwd")
            if user == "root" and pwd == "123":
                session["user_info"] = user
                return redirect('/index')
            return render_template('login.html')
    
    if __name__ == '__main__':
        app.run()

      上面在这个.py文件下新建一个templates文件夹,然后再里面新建一个login.html、index.html这样才能找到这个文件。因为在Flask这个类中默认模板的路径就是在同级的templates文件夹下找模板文件。

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <form method="post">
        <input type="text" name="user" value="用户名"/>
        <input type="text" name="pwd" value="密码"/>
        <input type="submit" value="登录">
    </form>
    
    </body>
    </html>
    login.html
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        {% for k,v in user.items() %}
        <li>{{v.name}}-{{v["name"]}}-{{v.get("name")}}</li>
        {% endfor %}
    </body>
    </html>
    index.html
  • 相关阅读:
    Aseprite+Cocos:打包像素画图,导入到cocos里并动起来
    自定义博客园个人皮肤
    埃航和737MAX坠毁:软件优先级问题
    淘宝网——软件质量属性场景分析
    王概凯《架构漫谈》阅读笔记
    2965 -- The Pilots Brothers' refrigerator
    UVa10082 -- WERTYU
    1753 -- Flip Game
    1083 -- Moving Tables
    2159 -- Ancient Cipher
  • 原文地址:https://www.cnblogs.com/shenjianping/p/13185435.html
Copyright © 2011-2022 走看看