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。我会了之后再进行补充。
flask中的重定向,渲染,反转视图函数的更多相关文章
- flask中url_for使用endpoint和视图函数名
在flask中,使用url_for 进行路由反转时,需要传递一个endpoint的值,用法如下: @app.route('/', endpoint='my_index') def index(): r ...
- Flask从入门到精通之在视图函数中处理表单
在新版hello.py 中,视图函数index() 不仅要渲染表单,还要接收表单中的数据.更新后的index() 视图函数如下: @app.route('/') def index(): name = ...
- Flask实战第6天:视图函数Response返回值
视图函数的返回值会被自动转换为一个响应对象,Flask的转换逻辑如下: 如果返回的是一个合法的响应对象,则直接返回 可以使用make_response函数来创建Response对象,这个方法可以设置额 ...
- flask第七篇——URL与视图函数的映射
有兴趣的朋友可以添加微信公众号:自动化测试实战 今天开始就要进入正题了.大家都准备好了吧~ 代码提示 先和大家说个小知识点:有同学后台说输入flask代码pycharm不提示,现在告诉你一个解决方法: ...
- 6、Flask实战第6天:视图函数Response返回值
视图函数的返回值会被自动转换为一个响应对象,Flask的转换逻辑如下: 如果返回的是一个合法的响应对象,则直接返回 可以使用make_response函数来创建Response对象,这个方法可以设置额 ...
- flask中用类的方式构造视图函数
from flask import Flask from flask.views import MethodView app = Flask(__name__) class IndexView(Met ...
- Django之views视图函数
views视图函数属于MTV中逻辑处理的部分视图函数包含着两个对象,HttpRequest对象和HttpResponse对象 一.HttpRequest对象 HttpRequest对象在Django中 ...
- 转载 Flask中客户端 - 服务器 - web应用程序 是如何处理request生成response的?
文章转载自https://blog.csdn.net/weixin_37923128/article/details/80992645 , 感谢原作者 当客户端向服务器发送一个请求时,服务器会将请求转 ...
- flask中请求勾子
请求勾子 在客户端和服务器交互的过程中,有些准备工作或扫尾工作需要处理,比如: *在请求开始时,建立数据库连接; *在请求开始时,根据需求进行权限校验; *在请求结束时,指定数据的交互格式; 为了让每 ...
随机推荐
- 面试题:能谈谈Date、Datetime、Time、Timestamp、year的区别吗?
一. 推荐阅读 首发地址:https://mp.weixin.qq.com/s/9zKX86P4kzlKla6-NyS3EA 使用推荐阅读,有更好的阅读体验 二.准备 如果面试官问你:了解 date. ...
- 《.NET 5.0 背锅案》第1集:验证 .NET 5.0 正式版 docker 镜像问题
今天我们分析了博客站点的2次故障(故障一.故障二),发现一个巧合的地方,.NET 5.0 正式版的 docker 镜像是在11月10日提前发布上线的. 而在11月10日下午4点左右,由于 CI 服务器 ...
- IO流读写数据简单示例
常用的字节输入流有:InputStream ,FileInputStream,BufferedInputStream 常用的字节输出流有:OutputStream,FileOutputStream,B ...
- [收藏] 传说中的12306买票插件-chrome专用
12306.cn买票,难死了,登录登录登录... 现在不用了... js插件+chrome浏览器: /* * 12306 Auto Query => A javascript snippet t ...
- JSON小结【json-lib】
javabean:Address package com.baebae.model; public class Address { private String city; private Strin ...
- lua调用dll demo
使用的是lua5.3 DllMain.cpp 1 //生成的dll 是 lua_add53.dll 2 //luaopen_lua_add 3 extern "C" { 4 #in ...
- python之深浅copy与id
我们都知道 所谓变量就是就是在空间中开辟一块内存空间.来存放东西的 学过c语言的都知道而数组也是有内存地址的 我们如何来查看内存地址呢?id()这函数就来了 x = 5 print(id(x)) 如此 ...
- 测试_appium测试工具
一.Appium介绍 Appium是一个开源的自动化测试工具,其支持iOS和安卓平台上的原生的,基于移动浏览器的,混合的应用. 1.Appium 理念 Appium是基于以下的四个理念设计来满足移动平 ...
- uniapp开发小程序
uniapp开发小程序 uni-app 是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码,可发布到iOS.Android.Web(响应式).以及各种小程序(微信/支付宝/百度/头条 ...
- kali 系列学习07-攻击之密码生成
比较理想的字典是拖库字典,比如CSDN字典,如果要生成字典,可以使用Crunch 和 rtgen 两个工具, 一.密码生成 1.Crunch (1)启动crunch命令.执行命令如下所示. #crun ...