当我们访问网站/的时候,会执行hell_world函数,并把这个函数的返回值返回给浏览器,这样浏览器就显示hello world了

@app.route('/')
def hello_world():
return 'Hello World!'

按照这种映射关系,我们可以再写一个,比如文章列表

@app.route('/article_list/')
def article_list():
return 'Article list'

这样,我们访问127.0.0.1:5000/article_list/的时候,浏览器就会显示Article list

那么我们要如何给url传参呢?

比如我们来写个文章详情页

@app.route('/article/<article_id>/')  #我们在<>里面写参数名article_id
def article_detail(article_id): #这里的参数名要和上面的一致,即article_id
return '您请求的文章是:{}'.format(article_id)

访问http://127.0.0.1:5000/article/1/

限定参数数据类型

可以对参数限定数据类型,比如上面的文章详情,限定article_id必须为整数型

@app.route('/article/<int:article_id>/')
def article_detail(article_id):
return '您请求的文章是:{}'.format(article_id)

这样当我们传递的参数是int类型的时候才能正常访问,其他类型都会返回404

类型可以设置提下几种:

  string: 默认的数据类型,接收没有任何斜杠"\   /"的文本

  int: 整数形

  float: 浮点型

  path: 和string类似,但是接受斜杠

  uuid: 只接受uuid字符串

  any: 可以指定多种路径,比如以下例子

@app.route('/<any(article,blog):url_path>/<id>/')
def item(url_path, id):
if url_path == 'article':
return '文章详情:{}'.format(id)
else:
return '博客详情:{}'.format(id)

?key=value形式传参

上面我们接受参数使用的是path形式,下面我们来使用查询字符串的形式,即?key=value

如果有多个参数,则用&来拼接: ?key1=value1&key2=value2

from flask import Flask, request
... @app.route('/d/')
def d():
wd = request.args.get('wd')
return '您传递的参数是: {}'.format(wd)

如果你的页面想做SEO优化,就是被搜索引擎搜索到,那么推荐使用path形式

如果无所谓,可以使用查询字符串方式

提醒

在定义url的时候,一定记得在最后加一个斜杠,

1、如果不加斜杠,那么在浏览器中访问这个url的时候最后加了斜杠,那么就访问不到了,用户体验不好

2、搜索引擎会将不加斜杠的和加斜杠的视为不同的url,而实际上是同一个,那么会给浏览器造成一个误解,加了斜杠就不会出现斜杠的问题

2、Flask实战第2天:URL传参的更多相关文章

  1. Django(五)1 - 4章实战:从数据库读取图书列表并渲染出来、通过url传参urls.py path,re_path通过url传参设置、模板语法

    一.从数据库读取图书数据并渲染出来 1)app1/views.py函数books编写 [1]从模型下导入bookinfo信息 [2]从数据库获取图书对象列表 [3]把获取到的图书对象赋值给books键 ...

  2. 点击div 跳转并通过URL传参

    点击div前要先给div绑定要传的参数: //给panel绑定自定义属性,方便在跳转时传带参数,键/值对排列 panel.attr("user_age",user_age); pa ...

  3. 关于url传参中文乱码问题

    之前都一直很不了解中文编码得问题,之前在做项目中没碰到那么头痛的问题.所以一直没有了解中文乱码的问题. 问题描述: 地址: http://localhost:8080/sun-government/c ...

  4. Silverlight项目笔记8:层次布局、客户端读取shp、ExecuteCountAsync、柱状图、url传参

    1.层次布局 由于地图窗口和菜单栏都在一个父容器内,在浏览器缩小到一定程度点击地图弹出infoWindow时,会出现菜单栏遮挡infoWindow中间部分的现象,于是通过设置Canvas.ZIndex ...

  5. 浏览器URL传参最大长度问题

    这几天为解决一个BUG头疼了一段时间,BUG现象如下: 一个选择人员的选择控件,当选择多个人时(50多个的时候),返回没有错误现象,而再一次打开的时候就报404错误.看到这个错误非常纳闷,无法下手,只 ...

  6. 关于微信浏览不能URL传参,URL中的问号被删除

    关于微信浏览不能URL传参,URL中的问号被删除. 尼玛难道没有人遇到过这个问题?看了微信支付SDK3.0的代码,看到urlencode 看到了几次.实际上 在微信浏览器下 header('locat ...

  7. url传参后获取参数

    当我们通过url传参跳转到其他页面,如: http://www.xxx.com/content.html?id=217&name=txf&phone=15829087165 在跳转后的 ...

  8. url传参中文乱码解决

    url传参request.setCharacterEncoding("utf-8");无法解决中文乱码问题 解决方法: 修改tomcat---conf----server.xml文 ...

  9. URL传参时中文参数乱码的解决方法

    URL传参时,中文参数乱码的解决: 今天在工作中遇到了这样的一个问题,在页面之间跳转时,我将中文的参数放入到url中,使用location进行跳转传参,但是发现接收到的参数值是乱码.我的代码是这样写的 ...

随机推荐

  1. BZOJ1143 [CTSC2008]祭祀river 【二分图匹配】

    1143: [CTSC2008]祭祀river Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 3236  Solved: 1651 [Submit] ...

  2. 根据约束id名找到表名

    数据库运行删除某条数据出现 [Err] ORA-02292: 违反完整约束条件 (ITOUCH_FDA.FKC7DB45E29C5A81ED) - 已找到子集 根据ITOUCH_FDA.FKC7DB4 ...

  3. JavaScript的大括号的语义

    Javascript中大括号"{}"有四种语义作用: 语义1. 组织复合语句,这是最常见的: view source   print? 1 if( condition ) { 2 ...

  4. HDU4289:Control(最小割)

    Control Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Sub ...

  5. Web应用程序开发,基于Ajax技术的JavaScript树形控件

    感谢http://www.cnblogs.com/dgrew/p/3181769.html#undefined 在Web应用程序开发领域,基于Ajax技术的JavaScript树形控件已经被广泛使用, ...

  6. JetbrainsCrack

    http://blog.csdn.net/lcyong_/article/details/61205672 http://blog.csdn.net/nn_jbrs/article/details/7 ...

  7. bzoj4302 Hdu 5301 Buildings

    传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=4302 [题解] 出自2015多校-学军 题意大概是给出一个n*m的格子有一个格子(x,y)是 ...

  8. HDU1847 Good Luck in CET-4 Everybody!

    大学英语四级考试就要来临了,你是不是在紧张的复习?也许紧张得连短学期的ACM都没工夫练习了,反正我知道的Kiki和Cici都是如此.当然,作为在 考场浸润了十几载的当代大学生,Kiki和Cici更懂得 ...

  9. ILSPY反编译工具下载代替收费的Reflector工具

    原文发布时间为:2011-10-10 -- 来源于本人的百度文章 [由搬家工具导入] ILSPY反编译工具下载 http://build.sharpdevelop.net/BuildArtefacts ...

  10. bzoj 1041 数学推理

    原题传送门http://www.lydsy.com/JudgeOnline/problem.php?id=1041 我们只需要求第一象限内(不包括坐标轴)的点数然后ans=ans*4+4就好了 首先我 ...