flask篇B1 ,蓝图,路由,变量规则,response,request

from flask import Flask
from flask import Blueprint


app=Flask(__name__)

# 创建一个蓝图模板
main_blue=Blueprint('blue_one',__name__)

# 定义视图函数,使用蓝图配置路由
@main_blue.route('/hello')
def index():
    return '12345'


# 把蓝图注册到app上
app.register_blueprint(main_blue,url_prefix='/two')
if __name__=='__main__':
    app.run()

红色部分需要放到别的地方,然后导包过来

路由

from flask import Flask

app=Flask(__name__)

@app.route('/')
def hello_world():
    return "你好"

def index():
    return "大家好"
app.add_url_rule('/index',view_func=index)

# @app.route('/')等效于app.add_url_rule('/index',view_func=index)

@app.route('/index3/<int:num1>/<int:num2>') # 可以传两个值
def add(num1,num2):
    if num1>0 and num2>0:
        d=num1+num2
        return str(d)  # 返回值类型 str,dict,tuple, response,WSGI
    return '输入的数值不符合要求'
if __name__=='__main__':
    app.run()

变量规则

from flask import Flask

app=Flask(__name__)

data={"a":"北京","b":"上海","c":"深圳"}

@app.route('/')
def hello_world():
    return "你好"

@app.route('/getcity/<key>')  # <int:key>或<float:key>或<path:key>或<uuid:key>,默认是字符串  重点
def get_city(key):
    print(type(key))
    return data.get(key)
@app.route('/add/<int:num>')  # 整形  重点
def add(num):
    print(type(num))
    result=num+18
    return str(result)

@app.route('/add1/<float:money>') # 浮点数
def add1(money):
    print(type(money))
    return str(money)

@app.route('/index/<path:p>')  # 路径
def get_path(p):
    print(type(p))  #str类型
    print(p)
    return p

@app.route('/test/<uuid:uid>')  #uuid格式  cb6ff483-b305-4e84-9e69-547da29cf41b
def test(uid):
    print(type(uid))
    return "获取唯一的标识吗"

import uuid
# uid=uuid.uuid4()
# print(uid)

# 所有的路由搜索规则都是自上而下搜索,在写的路由是唯一.
@app.route('/projects/') # 请求路由中不加/,http://127.0.0.1:5000/projects ,不会报错
def projects():
    return  "the project page"

@app.route('/about') # 请求路由中添加/,http://127.0.0.1:5000/about/,会报错显示 Not Found

def about():
    return "the about page"
@app.route('/index1')
def index1():
    return Response("<h1>大家好</h1>")  # 返回Response对象,return 后面返回的字符其实也是作了一个response对象的封装,最后的返回结果还是response对象

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

视图

返回值:

response

from flask import Flask
from flask import Response
from flask import make_response
app=Flask(__name__)


@app.route('/index1')
def index1():
    response=Response('<h1> 你过来呀!</h1>')
    response.set_cookie('name','小小')  #可以定制
    return response

@app.route('/index2')
def index2():
    one=''''
    123
    '''
    response=make_response(one)
    response.headers['test001']='6666666666666'  # 可以定制
    print(response.content_type)
    return response


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

视图函数----返回值:

类型:字符串,dict,tuple,response,WSGI

response对象  响应对象

response(‘字符串’,headers={key:value})

response=make_response(‘........’)

response.headers['aaa']=‘aaa’

print(response.content_type)

print(response.headers)

print(response.status_code)

print(response.status)

request

在register.html文件中

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>用户注册页面</title>
</head>
<body>
<h1>京东注册页面</h1>
<div>
    {#如果是表单提交则必须在表单的元素上添加name属性#}
    <form action="register2" method="get">  {#method="get"#}
        <input type="text" name='username' placeholder="输入用户名">  {#name='xxxx'就是传给register2的内容#}
        <input type="text" name='address' placeholder="请输入地址">   {#name='xxxx'就是传给register2的内容#}
        <input type="text" name="username2" placeholder="确认用户名">
        <input type="submit" value="提交">
    </form>
</div>
</body>
</html>

在app1.py文件中

from flask import Flask,request
from flask import render_template
import json

app=Flask(__name__)

users=[]
@app.route('/index')
def index():
    print(request.headers)  # request对象,对象访问属性,也可以调用方法
    return 'welcome everyone!'

@app.route('/register')
def register():
    r=render_template('register.html')  # 默认从模板文件夹中找文件
    print(r)
    return r


@app.route('/register2',methods=['GET','POST']) # methods=['GET','POST'] 如果没有这个默认的只有get,没有post
def register2():  # 获取页面提交的内容
    if request.method=='POST':
        print(request.full_path)  #/register2?username=zhao&address=山西#
        print(request.path)   # /register2  #
        print(request.args)  # dict类型  如果请求方法是get 则需要通过request.args取值
        # print(request.args.get('username'))  # 获取值
        # print(request.args.get('address'))
        print(request.form)  # 如果请求方法是post 则需要通过request.form取值
        print(request.form.get('username'))
        print(request.form.get('address'))
        username=request.form.get('username')
        username2=request.form.get('username2')
        address=request.form.get('address')
        if username==username2:
            user={'username':username,'address':address}
            users.append(user)
            return '注册成功'
        else:
            return '不一样'

    return '不是post'

@app.route('/show')
def show():
    j_str=json.dumps(users)
    return j_str


if __name__=='__main__':
    print(app.url_map)   # 路由规则表
    app.run()

render_template的传递过程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值