相关疑难解决方法(0)

Flask:request.form[“xxxxx”]、request.form.get(“xxxxxx”)和request.args.get(“xxxxx”)之间的区别?

flask.request.form["xxx"]flask.request.form.get("xxx")和之间有什么区别flask.request.args.get("xxx")

我有这个问题,因为我正在使用flask-login 来处理身份验证。
特别是在下面的代码中(取自flask-login github页面),我不明白为什么 with req.form.get("email"), email 是None,而 with req.form["email"], email 没有值。这是代码。

@login_manager.request_loader
def request_loader(req):
    email = req.form.get('email')
    if email not in users:
        return

    user = User()
    user.id = email

    # DO NOT ever store passwords in plaintext and always compare password
    # hashes using constant-time comparison!
    user.is_authenticated = req.form['pw'] == users[email]['pw']

    return user
Run Code Online (Sandbox Code Playgroud)

python flask flask-login

5
推荐指数
1
解决办法
6004
查看次数

Flask Urls中的问号用于路由

所以,我在Flask中有以下路线:

@app.route("/menu-card/<google_place_id>", methods=['GET']) 
Run Code Online (Sandbox Code Playgroud)

在导航到http://127.0.0.1:5000/menu-card/ChIJAxXhIUMUrjsR5QOqVsQjCCI时,我得到了正确的回复.

但是,我尝试更改URL模式,如下所示:

@app.route("/menu-card?id=<google_place_id>", methods=['GET'])
Run Code Online (Sandbox Code Playgroud)

在导航到http://127.0.0.1:5000/menu-card?id=ChIJAxXhIUMUrjsR5QOqVsQjCCI时,我现在收到404错误.我究竟做错了什么 ?

routing werkzeug flask python-2.7

5
推荐指数
1
解决办法
3252
查看次数

在 Flask 上使用 Jquery $.ajax 调用服务器端函数

我想使用 Ajax 调用服务器端函数。

在这篇文章中找到了一个简单的 PHP 示例。我认为如果我们可以包含这个非常相同的示例,但对于 Python / Flask MVC 框架,社区会有所改善。

这是View端的ajax代码,叫做test.html:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>

<script>
function create () {
$.ajax({
url:"test1", //the page containing python script
type: "post", //request type,
dataType: 'json',
data: {registration: "success", name: "xyz", email: "abc@gmail.com"},
success:function(result){
console.log(result.abc);
      }
    });
   } 
</script>
Run Code Online (Sandbox Code Playgroud)

这将是控制器上的 Python 代码:

@app.route('/test', methods=['GET','POST'])
    def test():
        return render_template("test.html", brand = brand)

@app.route('/test1', methods=['GET','POST'])
    def test1():
        if registration == "success":
            return json.dump({"abc":'successfuly registered'});
Run Code Online (Sandbox Code Playgroud)

python ajax flask

5
推荐指数
1
解决办法
7537
查看次数

没有 reqparse.RequestParser() 的简单请求解析

flask_restful.reqparse已被弃用(https://flask-restful.readthedocs.io/en/latest/reqparse.html):

Flask-RESTful 的整个请求解析器部分将被删除,并将被有关如何与其他更好地执行输入/输出内容的包(例如marshmallow)集成的文档所取代。这意味着它将一直保持到 2.0,但认为它已被弃用。别担心,如果您现在有使用它的代码并希望继续这样做,它不会很快消失。

我已经简要地看了棉花糖,如果我想替换reqparse.RequestParser(). 我们会写什么而不是像下面这样的东西:

from flask import Flask, request, Response
from flask_restful import reqparse

@app.route('/', methods=['GET'])
def my_api() -> Response:
   parser = reqparse.RequestParser()
   parser.add_argument('username', type=str, required=True)
   args = parser.parse_args()
   return {'message': 'cool'}, 200
Run Code Online (Sandbox Code Playgroud)

(在阅读了更多文档半小时后......)

RequestParserMultiDict request.values默认查看(显然是查询参数,然后根据/sf/answers/1166506351/形成正文参数)。那么我们只需要以request.values某种方式验证数据。

这是来自 Marshmallow 的一些相关代码的片段。似乎比reqparse以下更复杂:首先创建一个模式类,然后实例化它,然后让它加载请求 JSON。我宁愿不必为每个 API 端点编写单独的类。是否有类似于 的更轻量级的东西reqparse,您可以在定义端点的函数中编写所有类型的参数验证信息?

from flask import Flask, request, Response
from flask_restful import reqparse
from marshmallow import (
    Schema,
    fields,
    validate,
    pre_load, …
Run Code Online (Sandbox Code Playgroud)

python flask flask-restful

5
推荐指数
1
解决办法
1743
查看次数

使用烧瓶查看多部分表单请求参数值

我正在将文件上传到我的烧瓶后端,但我不知道如何访问多部分表单中的参数值。

我可以通过这样做轻松访问上传的文件,file = request.files['file']但无法找到获取参数值的方法。

我尝试了以下但没有任何运气:

    print(request.data['share'])
    print(request.data['title'])
    print(request.get('share'))
    print(request.get('title'))
Run Code Online (Sandbox Code Playgroud)

python flask

4
推荐指数
1
解决办法
5312
查看次数

如何在Flask中获取表单数据?

我需要从表单中获取数据.

我使用JavaScript来创建表单:

<script>   
function checkAuth() {
                var user = ADAL.getCachedUser();
                if (user) {
                    var form = $('<form style="position: absolute; width: 0; height: 0; opacity: 0; display: none; visibility: hidden;" method="POST" action= "{{ url_for("general.microsoft") }}">');

                    form.append('<input type="hidden" name="token" value="' + ADAL.getCachedToken(ADAL.config.clientId) + '">');
                    form.append('<input type="hidden" name="json" value="' + encodeURIComponent(JSON.stringify(user)) + '">');
                    $("body").append(form);
                    form.submit();
                }
            }
</script> 
Run Code Online (Sandbox Code Playgroud)

然后我需要从输入字段中获取数据name="json".

这是我的视图功能:

@general.route("/microsoft/", methods=["GET", "POST"])
@csrf.exempt
def microsoft():
    form = cgi.FieldStorage()
    name = form['json'].value
    return name
Run Code Online (Sandbox Code Playgroud)

但是我收到一个错误:

builtins.KeyError KeyError: 'json'

帮我从表格中获取数据.

javascript python json flask

3
推荐指数
1
解决办法
3万
查看次数

如何检查请求POST中是否存在值?

我使用POST方法提交表单.表单有一个输入字段:time.

我试着检查是否存在参数:

if 'time' in request.data:
   pass
Run Code Online (Sandbox Code Playgroud)

但它不起作用

python flask python-2.7

2
推荐指数
1
解决办法
3763
查看次数

通过 POST 从 React 获取数据到 Flask

我是 React 和 Flask API 系统的新手。我创建了一个网站,允许用户通过搜索栏进行搜索。\n我希望能够通过 POST 请求将查询从 React 搜索栏发送到 Flask API。\n但是我得到的是空字符串或 ImmutableDict

\n\n

反应代码

\n\n
function handlePostQuery(query){\n\n    if (query != "") {\n        axios.post(\'http://localhost:5000/api/query\', query)\n            .then(function(response){\n                console.log(response);\n       //Perform action based on response\n        })\n        .catch(function(error){\n            console.log(error);\n       //Perform action based on error\n        });\n    } else {\n        alert("The search query cannot be empty")\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

烧瓶代码

\n\n
@app.route(\'/api/query\', methods = [\'POST\'])\ndef get_query_from_react():\n    data = request.form\n    print(data)\n    return data\n
Run Code Online (Sandbox Code Playgroud)\n\n

按照这个答案:\n获取 Flask 请求中收到的数据

\n\n

我尝试了所有这些,但我总是得到(在 Flask 中)一个空字符串,除非我使用request.form它返回类似的内容:

\n\n

ImmutableMultiDict([(\'what I type …

flask reactjs

2
推荐指数
1
解决办法
9031
查看次数

Flask with Backbone.js REST API

Model.save()在backbone.js中,将模型数据作为POST发送到服务器,作为JSON编码的字符串.它只是一个字符串而不是variable=jsonString普通的POST请求.所以我无法在Flask中访问它request.form.get('variable').我应该在哪里编辑代码?Flask可以处理这样的请求吗?Backbone.js可以像普通的post请求一样发送数据而不是JSON编码的字符串吗?

如果需要,可以提供更多信息.

rest json flask backbone.js

1
推荐指数
1
解决办法
3871
查看次数