flask简单应用

2018-11-12  本文已影响0人  山高路远_海深不蓝

flask_basic

static: 类似django应用中的静态文件,用于存放一些资源文件,如css和js文件
templates: 存放网页模板文件
hello.py,urls.py,views.py都是自命名的功能文件,
其中urls.py的起名类似Django的urls.py(路由)文件,views.py类似Django的views.py功能函数文件.

start起步

创建一个简单的应用

from flask import Flask

# 创建并返回一个WSGI应用程序对象
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'hello world!'

if __name__ == '__main__':
   app.run()

app.route通过装饰器设置服务器对应的路由('/'代表根路由)
flask中路由分为动态和静态两种,静态路由即路径是一种固定格式,动态路由则可以根据用户的输入自动进行切换.

@app.route('/add/')
def add_infor():
    return '用户信息添加成功'

@app.route('/show')
def show_infor():
    return '用户信息查询成功'

静态路由有两种,一种是右边带有'/',一种不带,带'/'的路由可以保证用户在访问时忘记添加'/'时,服务器自动进行服务器的接收.第二种路由用户在访问时绝对不能在对应的位置添加'/'

from flask import Flask,  request
from views import *

app = Flask(__name__)

@app.route('/<name>/')
def path_set(name):
    if name == 'login':
        return show_login(request)
    elif name == 'regist':
        return show_regist(request)

if __name__ == '__main__':
    app.run('127.0.0.1', '8000', debug=True)

name为网页地址的根路由后的下级路由例如http://127.0.0.1:8000/login,name为login
如果需要限制name的类型可以使用<int:name>等,但注意整形不能直接return

from flask import  url_for, render_template

def show_login(request):
    return render_template('login.html', css_path=url_for('static', filename='css/login.css'))

def show_regist(request):
    return render_template('regist.html',css_path=url_for('static', filename='css/login.css'))

render_template类似Django的render,参数request为前端请求参数,
login.html为待渲染的网页模板,css_path为给前端返回的一个路由,前端可以直接通过{{css_path}}访问

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登录</title>
    <link rel="stylesheet" href="{{css_path}}">
</head>
<body>
    <form action="" method="post">
        <div>
            用户名: <input type="text" name="user">
        </div>
        <div>
            <span style="letter-spacing: 1em">密</span>码:
            <input type="password" name="passw">
        </div>
        <div>
            <input type="submit" value="登录">
        </div>
        <div>
            <a href="" target="_blank">新用户注册</a>
        </div>
    </form>
</body>
</html>
@app.route('/post_test/', methods=['POST'])
def get_post():
    '''
    request: 用来存储对应的请求对象,其中methods属性获取本次请求的请求方式,values获取本次请求前端向后台
    传输的数据,values对应的是一个字典类型的数据,可以通过key来获取指定的前端内容
    '''
    if request.method == 'POST':
        print(request.values)
        for key,value in request.values.items():
            print(key, value)
        # 对于POST来说args没有作用
        # print(request.args.get('name'))
        print(request.values.get('name'))
        # full_path显示全路径(包含参数)
        return request.path
    else:
        return 'error'

methods: 设置当前路由能够支持的请求方式,默认情况下只支持get.

Tip:

前端指定form表单的请求方式为post后,请求函数必须加上methods的post方式.

上一篇下一篇

猜你喜欢

热点阅读