flask第十三篇——url注意事项

先和大家说一下常用的请求方法

get:只是从服务器获取数据,不会对服务器的状态或数据产生任何影响;

get方法的参数是放在URL中传递的。

post:会对服务器的状态或数据产生影响;通过body形式进行数据传递。

现在如果我们希望只能通过get方法才能访问一个url(或者说调用一个函数)该怎么办呢?看下面的代码:

# coding: utf-8

from flask import Flask
from werkzeug.routing import BaseConverter
import flask

app = Flask(__name__)  # type: Flask
app.debug = True


# 根目录
@app.route('/', methods=['GET'])
def hello_world():

    return 'Hello World!'


if __name__ == '__main__':
    app.run()

上面在app.route()中传入了一个methods参数,传的参数是数组(或元组),这样就对hello_world函数的访问进行了限制——只能使用get方法才能请求到。

或者你也可以在methods方法里传入两个参数methods=['GET', 'POST']这样该方法就可以通过两种方式请求到了。如果不传递methods参数,那么默认是只有GET方法的。

URL的唯一性

之前已经有朋友问到了,就是@app.route('/list/')这个装饰器里list后面的/是不是必须传的,其实大家可以自己试一下,现在我们新定义一个函数:

@app.route('/list')
def mylist():
    return u'没有/的list'

然后访问该函数,可以看到当我们访问127.0.0.1/list/时是访问不到的:

但是我们访问127.0.0.1/list是可以访问到的:

但是如果我们这样写:

@app.route('/list/')
def mylist():
    return u'有/的list'

我们访问127.0.0.1/list,我们发现也是可以访问到的,因为浏览器自动给你加上/(重定向)了。所以建议大家在定义url的时候都加上后面的斜杠/。

还有一点需要和大家说明,就是大家如果修改端口号app.run(port=2000)这种操作时,port后面传的端口号必须是Integer类型的,就是说必须是整型,这样传app.run(port='2000')是不对的。

原文发布于微信公众号 - 自动化测试实战(gh_839e78b6ba28)

原文发表时间:2018-03-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏用户画像

指令及操作数的寻址方式

  操作数的寻址:把操作数的形式地址,根据间址和变址等组合变换为操作数有效地址的过程。

4262
来自专栏chenssy

【死磕Java并发】-----Java内存模型之happens-before

在上篇博客(【死磕Java并发】—–深入分析volatile的实现原理)LZ提到过由于存在线程本地内存和主内存的原因,再加上重排序,会导致多线程环境下存在可见性...

1222
来自专栏云计算教程系列

如何使用Grep

Grep是一个命令行实用程序,可以使用常见的正则表达式语法搜索和过滤文本。它无处不在,动词“to grep”已经成为“搜索”的同义词。它grep是一个有用的工具...

1413
来自专栏AndroidTv

写个批处理来帮忙干活---遍历&字符串处理前言批处理脚本

2235
来自专栏小樱的经验随笔

【Java学习笔记之三十四】超详解Java多线程基础

前言 多线程并发编程是Java编程中重要的一块内容,也是面试重点覆盖区域,所以学好多线程并发编程对我们来说极其重要,下面跟我一起开启本次的学习之旅吧。 正文 线...

3775
来自专栏前端之路

封装用于vue项目使用的jsonp库

1242
来自专栏蓝天

有关snprintf返回值

有关snprintf返回值更多信息,请参考:http://bbs.hadoopor.com/thread-1185-1-1.html

911
来自专栏小怪聊职场

爬虫课堂(十五)|Request和Response(请求和响应)

5846
来自专栏Java帮帮-微信公众号-技术文章全总结

hibernate延迟加载详解

hibernate延迟加载详解 Hibernae 的延迟加载是一个非常常用的技术,实体的集合属性默认会被延迟加载,实体所关联的实体默认也会被延迟加载。hiber...

3203
来自专栏Python

django:DateTimeField如何自动设置为当前时间并且能被修改 ——django日期时间字段的使用

创建django的model时,有DateTimeField、DateField和TimeField三种类型可以用来创建日期字段,其值分别对应着datetime...

5958

扫码关注云+社区

领取腾讯云代金券