Python 如何使用Flask从URL获取命名参数?

Python 如何使用Flask从URL获取命名参数?,python,web-services,flask,url-parameters,Python,Web Services,Flask,Url Parameters,当用户访问在我的flask应用程序上运行的此URL时,我希望web服务能够处理问号后面指定的参数: http://10.1.1.1:5000/login?username=alex&password=pw1 #I just want to be able to manipulate the parameters @app.route('/login', methods=['GET', 'POST']) def login(): username = request.form['

当用户访问在我的flask应用程序上运行的此URL时,我希望web服务能够处理问号后面指定的参数:

http://10.1.1.1:5000/login?username=alex&password=pw1

#I just want to be able to manipulate the parameters
@app.route('/login', methods=['GET', 'POST'])
def login():
    username = request.form['username']
    print(username)
    password = request.form['password']
    print(password)
用于获取查询字符串的已解析内容:

from flask import request

@app.route(...)
def login():
    username = request.args.get('username')
    password = request.args.get('password')
用于获取查询字符串的已解析内容:

from flask import request

@app.route(...)
def login():
    username = request.args.get('username')
    password = request.args.get('password')

URL参数在中可用,它是一个具有
get
方法的,具有默认值(
default
)和类型(
type
)的可选参数-可调用该参数将输入值转换为所需格式。(有关详细信息,请参阅。)

上面代码的示例:

/my-route?page=34               -> page: 34  filter: '*'
/my-route                       -> page:  1  filter: '*'
/my-route?page=10&filter=test   -> page: 10  filter: 'test'
/my-route?page=10&filter=10     -> page: 10  filter: '10'
/my-route?page=*&filter=*       -> page:  1  filter: '*'

URL参数在中可用,它是一个具有
get
方法的,具有默认值(
default
)和类型(
type
)的可选参数-可调用该参数将输入值转换为所需格式。(有关详细信息,请参阅。)

上面代码的示例:

/my-route?page=34               -> page: 34  filter: '*'
/my-route                       -> page:  1  filter: '*'
/my-route?page=10&filter=test   -> page: 10  filter: 'test'
/my-route?page=10&filter=10     -> page: 10  filter: '10'
/my-route?page=*&filter=*       -> page:  1  filter: '*'
还可以在视图定义的URL上使用括号,该输入将进入视图函数参数

@app.route('/<name>')
def my_view_func(name):
    return name
@app.route(“/”)
定义我的视图功能(名称):
返回名称
您还可以在视图定义的URL上使用括号,该输入将进入视图函数参数中

@app.route('/<name>')
def my_view_func(name):
    return name
@app.route(“/”)
定义我的视图功能(名称):
返回名称

如果在URL中传递了一个参数,则可以按如下操作

from flask import request
#url
http://10.1.1.1:5000/login/alex

from flask import request
@app.route('/login/<username>', methods=['GET'])
def login(username):
    print(username)
如果POST请求中的参数作为表单参数传递,并且不显示在URL中,那么您尝试执行的操作将起作用。如果您实际上正在开发登录API,建议您使用POST请求,而不是获取数据并向用户公开数据

在提出post请求的情况下,其工作如下:

#url
http://10.1.1.1:5000/login
HTML代码段:

<form action="http://10.1.1.1:5000/login" method="POST">
  Username : <input type="text" name="username"><br>
  Password : <input type="password" name="password"><br>
  <input type="submit" value="submit">
</form>

如果在URL中传递了一个参数,则可以按如下方式执行

from flask import request
#url
http://10.1.1.1:5000/login/alex

from flask import request
@app.route('/login/<username>', methods=['GET'])
def login(username):
    print(username)
如果POST请求中的参数作为表单参数传递,并且不显示在URL中,那么您尝试执行的操作将起作用。如果您实际上正在开发登录API,建议您使用POST请求,而不是获取数据并向用户公开数据

在提出post请求的情况下,其工作如下:

#url
http://10.1.1.1:5000/login
HTML代码段:

<form action="http://10.1.1.1:5000/login" method="POST">
  Username : <input type="text" name="username"><br>
  Password : <input type="password" name="password"><br>
  <input type="submit" value="submit">
</form>
网址:

代码:

@app.route('/user/',methods=['GET','POST'])
def用户视图(名称):
印刷品(名称)
(编辑:删除格式字符串中的空格)

url:

代码:

@app.route('/user/',methods=['GET','POST'])
def用户视图(名称):
印刷品(名称)

(编辑:删除格式字符串中的空格)

非常简单。让我把这个过程分为两个简单的步骤

  • 在html模板上,您将声明用户名和密码的名称属性,如下所示:
  • 
    
  • 然后,按如下方式修改代码:
  • 来自flask导入请求
    @app.route('/my route',methods=['POST'])
    #您应该始终解析用户名和密码
    #POST方法中的密码无法获取
    定义我的路径()
    用户名=request.form.get(“用户名”)
    打印(用户名)
    密码=request.form.get(“密码”)
    打印(密码)
    #现在,根据需要操作用户名和密码变量
    #提示:如果需要,请定义另一个方法,而不是方法=['GET'、'POST']
    #也使用GET请求呈现相同的模板
    
    这真的很简单。让我把这个过程分为两个简单的步骤

  • 在html模板上,您将声明用户名和密码的名称属性,如下所示:
  • 
    
  • 然后,按如下方式修改代码:
  • 来自flask导入请求
    @app.route('/my route',methods=['POST'])
    #您应该始终解析用户名和密码
    #POST方法中的密码无法获取
    定义我的路径()
    用户名=request.form.get(“用户名”)
    打印(用户名)
    密码=request.form.get(“密码”)
    打印(密码)
    #现在,根据需要操作用户名和密码变量
    #提示:如果需要,请定义另一个方法,而不是方法=['GET'、'POST']
    #也使用GET请求呈现相同的模板
    
    使用
    request.args.get(param)
    ,例如:

    http://10.1.1.1:5000/login?username=alex&password=pw1
    

    使用
    request.args.get(param)
    ,例如:

    http://10.1.1.1:5000/login?username=alex&password=pw1
    
    这应该行得通

    @app.route('/login$username=$password=',methods=['GET','POST']))
    def登录(用户名、密码):
    #你可以加东西
    返回f“用户名:{Username}\n密码:{password}”
    
    这应该行得通

    @app.route('/login$username=$password=',methods=['GET','POST']))
    def登录(用户名、密码):
    #你可以加东西
    返回f“用户名:{Username}\n密码:{password}”
    

    只是一个安全提示:不要在GET请求中包含密码。另一个关于安全性的小提示:不要向HTTP端点发送密码(仅限HTTPS)只是一个关于安全性的小提示:不要在GET请求中包含密码。另一个关于安全性的小提示:不要向HTTP端点发送密码(只发送HTTPS)。我认为这应该是答案,因为这是de flask文档的目的。这应该是公认的答案!这是一个路径参数,而不是查询。不知何故,这对我不起作用……我从python中得到了错误。我认为这应该是答案,因为这是de flask文档的目的。这应该是公认的答案!这是一个path参数,而不是QUERY这对我不起作用……我从python中得到了错误。
    filter
    是一个保留字,不应使用;)@IvanCamilitoRamirezVerdes您能为这个过滤器关键字提供一个资源吗?@Genius我认为
    filter
    在python中不是一个关键字,而是一个内置函数的名称。有关详细信息,请参阅。
    filter
    是保留字,不应使用;)@IvanCamilitoRamirezVerdes您能为这个过滤器关键字提供一个资源吗?@Genius我认为
    filter
    在python中不是一个关键字,而是一个内置函数的名称。有关详细信息,请参阅。这与在
    app.route('/username=&password=')中使用参数相比如何。