flask中的重定向,渲染,反转视图函数

  在学习flask中,重定向,渲染,反转老是不怎么明白,今天明白了其中的点了,来给大家分享下

  rend_templete()这个函数就是一个渲染的作用,渲染html的东西。

  url_for是反转视图函数的,比如

@app.route('/')

def index():
    return "this is a page"

  url_for通过index函数返回的是/页面,注意返回的是一个路由,是在定义好的路由的页面返回 / 的是一个路由,可以用print(url_for('index')) 结果应该是/

  而重定向,重定向可以配合着url_for()进行使用,这样的话,大家可以思索下,为什么是配合着url_for而不是直接跳转到路由的地方

  

  解答:

  以后项目需要改路由的时候,直接改路由就好了,不需要改内置函数,这样比较方便。

   在写路由的时候,我们可以看到路由中有变量的操作,这样对变量的操作,是否可以加一个限制?可以的,

比如,写进去一个id,设置一个int类型。


@app.route('/') def index(): return "this is a page" @app.route('/detail/<int :id>/') def detail(id): return "%s "% id 

  这个来自于flask手册的内容

int 接受整数
float 同 int ,但是接受浮点数
path 和默认的相似,但也接受斜线

  我们也可以自定义一个限制的变量

from werkzeug.routing import  BaseConverter
#导入一个BaseConverter,可以按住ctrl+鼠标左键点进去看看。
#再声明一个类继承BaseConverter,继承之后再把这个规则添加上就可以了

class TelephoneConvert(BaseConverter):

    regex = r'1[456]d{9}'

#regex是一个正则匹配的东西,想研究的可以百度搜索下


#把规则添加到BaseConverter中去
app.url_map.converters['tel'] = TelephoneConvert

#下面做个测试
@app.route('/telephone/<tel:my_tel>/')
def tel(my_tel):
    return  "the telephone is %s" %my_tel

  这个例子就很好的说明了,在开发的时候是可以自定义一个类进行添加的,后面会遇到传递参数的问题,其实传递参数也不难,要一开始就理解flask中url变量这个知识点,理解透了自然就懂了。关键点就是参数传递,传递时候在return rend_templetes or url_for or redirect后面加上就行了。

  补充一些零碎的东西:
  1.当想要设置成内网访问的时候,需要在app.run()里面加上host = '0.0.0.0'

  2.如果想要更改端口,那么再加上port='端口号'。注意修改端口启动的时候,不要以flask自带的run,进行启动,在终端中用 python app.py 中启动。这样启动的结果就会以你想要的端口号进行启动了。

  3.可以设置一个dubug = True,这样flask进行调试的时候,就不需要每次都关闭再重新进行启动了。

   ----------------------------------------再次补充----------------------------------------------------------------------------------------------

  平常用的重定向是redirect()暂时性重定向,还有一个是永远重定向。暂时性重定向是302,永远重定向是301。我会了之后再进行补充。

原文地址:https://www.cnblogs.com/Triangle-security/p/11337934.html