Flask框架 一

Flask 的基本概念

Flask 是一个非常轻量级的框架,提供了搭建 Web 服务的必要组件。
一个简单的flask 程序

# 倒入Flask类
from flask import  Flask


# 实例化一个Flask对象
app = Flask(__name__)
# __name__是当前目录的名字,是这个成程序的根目录
# 作用:根据这个参数确定flask的根目录,从而更快的查找模板和html文件的默认路径


# 创建一个路由,路由可以理解为,url和pytho程序中的函数之间的映射关系
@app.route('/')
# 视图函数,返回给用户的内容
def hello():
    return '

hello world

' # 运行flask应用,可以指定ip和端口 app.run()

注意:__name__的意思是模块或者包的名称,默认的是当前文件所在的目录
路由:路由在python和url之间形成了一种映射关系,而每个路由又绑定了一个视图函数,因此,url间接的执行了视图函数。
视图函数:返回给浏览器的内容。

flask中一些方法

  • render_template
    利用render_template在视图函数中,和templates中的html文件进行一个连接。
  • url_for
    根据传入的视图函数找到他路由
  • redirect
    根据传入的路由,定向到对应的视图函数。

动态url

产生背景:一个页面中,含有用户传入的信息,开发者不可能为每个用户创建一个url和页面内容,只能根据用户传入的数据构建用户自己的url和相应的内容。

rom flask import Flask,request

app = Flask(__name__)

# 动态路由
# 1.url里面可以标记变量形式为<变量名>
# 2.动态路由里面变量的类型 int,string,float,path,uuid

@app.route('//')
def login(user):
    return '欢迎%s来到社区' %user

# 特殊的url地址: http://www.baidu.com/query?id=123&name=westos
@app.route('/query')
def query():
    # 获取url地址里面对应的value值
    id = request.args.get('id')
    name = request.args.get('name')
    return 'id:%s,name:%s' %(id,name)


app.run()

注意:在传入的数据中,也可以加数据类型。

http中get方法和post方法

om flask import Flask, render_template, request, abort, redirect, url_for

app = Flask(__name__)

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

@app.route('/login/',methods=['POST','GET'])
def login():
    if request.method == 'POST':
        user = request.form['name']
        #注意:这里获取表单里数据的方式
        # request.form[]
        passwd = request.form['passwd']
        if user == 'root' and passwd == 'westos':
            return redirect(url_for('index'))
        else:
            abort(404)

    else:
        return render_template('login.html')


app.run()

分析:如果要从某个html文件要上传数据,有post和个他两种方法:
post:不会将传入的信息显示在url里面
get:会显示在url‘里面,不利于信息的保密
上面login函数的分析:
当第一次通过url加载时,会执行外部else里面的内容
然后,当我输入密码和名字点击登陆时,根据form表单里面的内容action=post会执行外面的if的语句。

模板引擎

jinja2常用语法:
for循环:
    {% for i in li %}
    {% endfor %}
    
if语句:
    {% if user == "westos" %}
    
    {elif user = 'linux"}
    
    {% else %}
     
    {% endif %}
from flask import Flask,render_template

app = Flask(__name__)

class User(object):
    def __init__(self,name,passwd):
        self.name = name
        self.passwd = passwd

    def __str__(self):
        return "" %self.name


@app.route('/')
def index1():
    name = 'python'
    li = [1,2,3]
    d =dict(a=1,b=2)
    u = User('python','linux')
    return render_template('index.html',
                           name=name,
                           li=li,
                           d=d,
                           u=u)


app.run()

对应的index1.html文件




    
    Title


    {{ name }}
{{ li }}
{{ d }}
{{ u }}

结果:
在这里插入图片描述

自定义过滤器

import time
from flask  import Flask,render_template

app = Flask(__name__)

class User(object):
    def __init__(self,name,passwd):
        self.name = name
        self.passwd = passwd

    def __str__(self):
        return "" %self.name

# 自定义一个过滤器
def format_data(value):
    ttime = time.localtime(value)
    return time.strftime('%Y-%M-%D %H:%m:%s')

# 像一个app里面添加一个过滤器
app.add_template_filter(format_data,'format_data')

@app.route('/index2/')
def index2():
    name = 'python'
    li = [1,2,3]
    d =dict(a=1,b=2)
    u = User('python','linux')
    return render_template('index2.html',
                           name=name,
                           li=li,
                           d=d,
                           u=u,
                           time = time.time())

app.run()

index2对应的html文件




    
    Title



    {{ name | upper }} 
{{ name | lower }}
{{ "hello" | capitalize }}
{{ name | reverse }}
{{ -12.578411935 | round }}
{{ -12.21795872 | round | abs }}
{{ li }}
{{ li | first }}
{{ li | last }}
{{ li | length }}
{{ li | sum }}
{{ li | sort | reverse }}
{{ li | join(':') }}
{% for i in d %} {{ i }} {% endfor %} {{ time | format_data }}

结果:
Flask框架 一_第1张图片

你可能感兴趣的:(Flask框架 一)