您当前的位置: 首页 >  Python

Python全栈:flask快速入门

彭世瑜 发布时间:2018-05-03 17:01:18 ,浏览量:2

参考 : flask快速入门 http://docs.jinkan.org/docs/flask/quickstart.html

项目结构 这里写图片描述

├── flask_demo.py   # 项目主文件
├── secret_key.py
├── static          # 静态文件目录
│   └── main.css
└── templates       # 模板文件目录
    ├── hello.html
    ├── login.html
    └── upload.html
代码文件

flask_demo.py

from flask import Flask
from flask import session, redirect, abort, url_for
from flask import request, render_template, make_response

app = Flask(__name__)

# 主页,登陆后显示登录名
@app.route('/')
def index():
    username = session.get("username")
    app.logger.info("index") # 日志
    return "Hello world %s"%username

# 路由参数变量
@app.route("/user/")
def show_username(username):
    return "username:%s"%username

# 参数转换器
@app.route("/id/")
def show_id(uid):
    return "your id:%d"%uid

# post, get请求
@app.route("/username", methods=["POST", "GET"])
def username():
    if request.method == "POST":
        return "post username"
    elif request.method == "GET":
        return "get username"
    else:
        return "none"

# 模板和静态文件
@app.route("/hello/")
@app.route("/hello/")
def hello(name=None):
    return render_template("hello.html", name=name)

# 表单post参数
@app.route("/login/", methods=["GET", "POST"])
def login():
    if request.method == "GET":
        return render_template("login.html")

    elif request.method == "POST":
        username = request.form.get("username")
        password = request.form.get("password")

        # session会话
        session["username"] = username

        return redirect(url_for("index"))
        # return "username:%s, password:%s"%(username, password)

# 退出登录
@app.route("/logout/")
def logout():
    session.pop("username", None)
    return redirect(url_for("index"))


# 推荐 get参数:http://127.0.0.1:5000/page/?num=4
@app.route("/page/")
def page():
    page_num = request.args.get("num")
    return "num:%s"%page_num


# 文件上传
@app.route("/upload/", methods=["GET", "POST"])
def upload_file():
    if request.method == "GET":
        return render_template("upload.html")

    elif request.method == "POST":
        file = request.files.get("upload-file")
        print(file.filename)
        file.save(file.filename)
        return "文件上传成功"

# 读取存贮 cookies
@app.route("/cookie/")
def cookie():
    username = request.cookies.get("username")
    print(username)
    response = make_response("访问cookie")
    if not username:
        response.set_cookie("username", "mouday")
    return response

# 404 与重定向
@app.route("/notpage1/")
def notpage1():
    return redirect(url_for("notpage2"))

@app.route("/notpage2/")
def notpage2():
    abort(401)

# 404页面
@app.errorhandler(404)
def not_find_page(error):
    return "404", 404

app.secret_key = r"\xedz\xdf\x1c\xd2\xa7\xdff:6\xef\xf2\x95mL\x18TF\r\x00LM\xec\xa9"


if __name__ == "__main__":
    # 监听所有公网 IP, 开启调试模式
    app.run(host='0.0.0.0', debug=True)

secret_key.py


# 可用于生成 secret_key

import os
print(os.urandom(24))

# b'\xedz\xdf\x1c\xd2\xa7\xdff:6\xef\xf2\x95mL\x18TF\r\x00LM\xec\xa9'

main.css

body{
    background-color: darkgreen;
}

hello.html




    
    Title
    


    
        hello world
        {% if name %}
            {{ name }}
        {% else %}
            没有名字
        {% endif %}
    

login.html




    
    Title



    
    
    



upload.html




    
    Title



    
    



关注
打赏
1688896170
查看更多评论

彭世瑜

暂无认证

  • 2浏览

    0关注

    2727博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.2742s