zoukankan      html  css  js  c++  java
  • 🍖Flask四剑客及简单使用

    一.Flask 的使用

    1.简单使用

    • 展示 "hello word"
    from flask import Flask
    
    app = Flask(__name__)
    
    @app.route('/')
    def index():
        return '<h1>Hello Word!</h1>'
    
    if __name__ == '__main__':
        # flask默认的端口是5000
        app.run()  # 本质还是调用了run_simple()方法:(源码)run_simple(host, port, self, **options)
    
    • 效果

    image-20210602211241913

    • 方法及参数分析
    from flask import Flask  # 导入Flask类
    
    app = Flask(__name__)
    """
    Flask内参数:
    import_name : Flask程序所在的包(模块),传 __name__ 就可以,用来决定Flask在访问静态文件时查找的路径
    static_path : 静态文件访问路径(不推荐使用,使用 static_url_path 代替)
    static_url_path : 静态文件访问路径,可以不传,默认为:/ + static_folder
    static_folder : 静态文件存储的文件夹,可以不传,默认为 static
    template_folder : 模板文件存储的文件夹,可以不传,默认为 templates
    """
    
    @app.route('/')
    def index():
        return '<h1>Hello Word!</h1>'
    """
    flask的路由是通过给视图添加装饰器的方式进行编写的。当然也可以分离到另一个文件中
    flask的视图函数,flask中默认允许通过return返回html格式数据给客户端
    """
    
    if __name__ == '__main__':
        # 运行flask,指定ip和port(默认是本机,5000端口)
        app.run(host="0.0.0.0", port=5000)
    

    二.Flask 四剑客、jinja2、request、登入入示例

    1.Falsk 三剑客

    • request : 类比Django中 HttpResponse (HTTP请求)
    • render_template : 类比Django中 render (渲染)
    • redirect : 类比Django中 redirect (重定向)
    • jsonify : 类比Django中 JsonResponse(返回json格式数据)

    2.jinja2 模板语法

    • 与Django的DTL类似,但是比DTL强大,支持加括号执行,字典支持中括号取值和get取值

    3.请求数据的存放的位置

    • get 请求 : request.query_string.get('xxx')
    • post 请求 : request.form.get('xxx')

    3.登入示例

    • run.py
    from flask import Flask, render_template, request, redirect
    
    app = Flask(__name__)
    app.debug = True
    """
    开发阶段,设置debug模式
    会在页面中显示错误信息
    可以在修改代码之后自动重启服务
    """
    
    # 用户信息
    USERS = {
        1: {'name': '派大星', 'age': 18, 'gender': '男', 'info': "星星星星星"},
        2: {'name': '海绵宝宝', 'age': 28, 'gender': '男', 'info': "宝宝宝宝宝"},
        3: {'name': '章鱼哥', 'age': 18, 'gender': '女', 'info': "鱼鱼鱼鱼鱼鱼"},
    }
    
    @app.route('/')
    def index():
        # 渲染页面,展示用户信息,前端使用的是jinjia2模板语法
        return render_template('index.html', user=USERS)
    
    # 前端通过转换器传入id参数
    @app.route('/detail/<int:id>')
    def detail(id):
        # 拿到该id用户渲染到详情页面
        user = USERS[id]
        return render_template('detail.html', user=user)
    
    # flask默认只允许get请求, 可以通过methods添加请求类型
    @app.route('/login/', methods=["GET", "POST"])
    def login():
        if request.method == "POST":
            password = request.form.get('password')
            username = request.form.get('username')
            if username == "shawn" and password == "123":
                # 登入成功重定向到首页
                return redirect('/')
            else:
                return render_template('login.html', error='用户名或密码错误!')
        return render_template('login.html')
    
    
    if __name__ == '__main__':
        app.run()
    
    • index.html
    
    
    
        <meta charset="UTF-8">
        <title>Title</title>
    
    
        <h1>用户信息</h1>
        
            {% for k,v in user.items() %}
            
            {% endfor %}
        <table><tbody><tr>
                <td>{{k}}</td>
                <td>{{v.name}}</td>
                <td>{{v['name']}}</td>
                <td>{{v.get('name')}}</td>
                <td><a href="/detail/{{k}}"> 查看简介</a></td>
            </tr></tbody></table>
    
    
    
    • detail.html
    
    <h1>用户信息: {{user.name}}</h1>
        <div>
            {{user.info}}
        </div>
    
    
    • login.html
    
    <h1>用户登录</h1>
        <form method="post">
            <input type="text" name="username">
            <input type="password" name="password">
            <input type="submit" value="登录"><br><span style="color: red">{{error}}</span>
        </form>
    
    

    </int:id>

  • 相关阅读:
    在Ubuntu中通过update-alternatives切换软件版本
    SCons: 替代 make 和 makefile 及 javac 的极好用的c、c++、java 构建工具
    mongodb 的使用
    利用grub从ubuntu找回windows启动项
    How to Repair GRUB2 When Ubuntu Won’t Boot
    Redis vs Mongo vs mysql
    java script 的工具
    python 的弹框
    how to use greendao in android studio
    python yield的终极解释
  • 原文地址:https://www.cnblogs.com/songhaixing/p/14851592.html
Copyright © 2011-2022 走看看