首页 > 代码库 > flask_之URL

flask_之URL

URL篇

静态路由

@app.route(‘/‘)
def hello_world():
    # 变量可以通过赋值传到前端,前端可以通过{{}}渲染
    return render_template(‘t1.html‘, name=‘t1‘, age=16)

@app.route(‘/services‘)
def services():
    return ‘Services‘
@app.route(‘/about‘)
def about():
    return ‘About‘

# 相对projects解释类似于文件夹解释形式,指向某一个文件夹下的某个文件
@app.route(‘/projects/‘)
@app.route(‘/projects_our‘) # 可以定义多个URL到同一个视图函数上,Flask支持
def projects():
    return ‘Projects‘

@app.route(‘/login‘,methods=["GET","POST"])
def login():
    return render_template(‘login.html‘, req_method=request.method)

 动态路由

# 动态路由
@app.route(‘/user/<username>‘)
def user(username):
    print username
    return username

# 路由转换器:指定参数类型
# flask提供3种:int(整形)|float(浮点型)|path(路径,并支持一个/)
@app.route(‘/user/<int:user_id>‘)
def user(user_id):
    print user_id
    return ‘User_id:%s‘%user_id

 自定义路由规则

# flask不提供正则表达的形式的URL匹配
# 可通过定义完成
# 1、from werkzeug.routing import BaseConverter
# 2、自定义类
#转换器
class RegexConverter(BaseConverter):
    def __init__(self,url_map,*items):
        super(RegexConverter,self).__init__(self)
        # print items # (u‘[a-z]{3}[A-Z]{3}‘,)
        # print url_map # URL 的一个MAP对象,类似路由表
        self.regex = items[0]

# 3、要将定义的类注册到APP的url_map中,定义名称
# app.url_map.converters[‘regex‘] = RegexConverter

# 4、使用
@app.route(‘/user/<regex("[a-z]{3}[A-Z]{3}"):username>‘)
def user(username):
    print username
    return ‘Username:%s‘ % username

 

flask_之URL