from flask import Flask,url_for
from werkzeug.routing import BaseConverter
app = Flask(__name__)
#converter 转换器的意思
@app.route('/')
def hello_world():
return 'hello world'
@app.route('/user/<int:id>/')
def user_profile(id):
return '你输入的用户id为:%s'%id
#实现一个需求:
#一个url中,含有手机号码的变量,必须限定这个变量的字符串格式必须满足手机号码的格式
class PhoneMatch(BaseConverter):
'''
自定义手机验证码格式
'''
regex = r'1[3-9][0-9]{9}'
app.url_map.converters['tel'] = PhoneMatch #把自定义的通过app.url_map.converters注册,然后才能使用
@app.route('/phone/<tel:my_telephone>/')
def phone(my_telephone):
return '用户你的电话号码为:%s'%my_telephone
#现在要实现一个a板块和b板块的帖子的总量
#原始的写法
@app.route('/post/<boards>/')
def posts(boards):
boards = boards.split('+')
print(boards)
return '你提交的板块:{}'.format(boards)
#如果是多个地方都要改变这样写,很麻烦
class ListConverter(BaseConverter):
def to_python(self, value):#这个value就是boards传入的值
return value.split('+')
def to_url(self, value):#跟url_for连用的
return "+".join(value) #列表的一个知识点:join
app.url_map.converters['list'] = ListConverter
@app.route('/book/<list:price>/')
def books(price):
print(price)
return 'a书和b书的价格为:{price}'.format(price=price)
@app.route('/index/')
def index():
print('*'*120)
print(url_for('books',price=["70","80"]))#to_url的用法
print('*'*120)
return '网站首页'
if __name__ == '__main__':
app.run(debug=True)
-----------------------------------------------------------------------------------------------------------------------------------------
列表join的用法
a = ['1','2']
s = '+'.join(a)
#一个列表要用join方法拼成字符串必须,必须整个列表元素都是字符串才行
print(s)
![]()