- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是代码。当我发送这两个字段时都失败了。
import unittest
class UnicodeTestCase(unittest.TestCase):
def test_unicode(self):
from cStringIO import StringIO
from flask import Flask, request
app = Flask(__name__)
app.config['TESTING'] = True
@app.route('/', methods=["POST"])
def test_view():
print request.values, request.files
return "OK"
file = (StringIO("0" * 1000), "filename.txt")
string = u"∆_∆"
client = app.test_client(use_cookies=False)
self.assertEquals(200, client.post('/', data={'file': file}).status_code)
self.assertEquals(200, client.post('/', data={'string': string}).status_code)
self.assertEquals(200, client.post('/', data={'file': file, 'string': string}).status_code)
在最后一个断言上它失败了:
Error
Traceback (most recent call last):
File "/Users/user1/tests/test_uni.py", line 108, in test_unicode
self.assertEquals(200, client.post('/', data={'file': file, 'string': string}).status_code)
File "/Users/user1/.virtualenvs/test/lib/python2.7/site-packages/werkzeug/test.py", line 771, in post
return self.open(*args, **kw)
File "/Users/user1/.virtualenvs/test/lib/python2.7/site-packages/flask/testing.py", line 108, in open
follow_redirects=follow_redirects)
File "/Users/user1/.virtualenvs/test/lib/python2.7/site-packages/werkzeug/test.py", line 725, in open
environ = args[0].get_environ()
File "/Users/user1/.virtualenvs/test/lib/python2.7/site-packages/werkzeug/test.py", line 535, in get_environ
stream_encode_multipart(values, charset=self.charset)
File "/Users/user1/.virtualenvs/test/lib/python2.7/site-packages/werkzeug/test.py", line 104, in stream_encode_multipart
write('\r\n\r\n' + value)
File "/Users/user1/.virtualenvs/test/lib/python2.7/site-packages/werkzeug/test.py", line 71, in write
write_binary(string.encode(charset))
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 4: ordinal not in range(128)
当我使用 Postman(Google Chrome 扩展程序)发送这两个字段时,它工作正常。
可以吗?我应该用 unicode 和 base64 或其他东西包装字段吗?还是 werkzeug 测试客户端中的错误?
最佳答案
看起来像测试客户端错误,当直接请求工作正常时,我已经有测试客户端的另一个错误,但测试客户端有意外结果。
对我来说 https://github.com/mitsuhiko/werkzeug/blob/master/werkzeug/test.py#L71我将 string
类型设置为 str
。仅对于字符串不调用此方法,对于文件仅此方法不调用您的字符串。您可以尝试使用 next 临时更新此方法,仅适用于 python 2:
def write(string):
if isinstance(string, str):
write_binary(string)
else:
write_binary(string.encode(charset))
我为您的示例创建了错误:https://github.com/mitsuhiko/flask/issues/973 .
关于flask - Werkzeug 测试客户端和 utf-8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21584413/
我目前对 Python 中 import 如何工作的理解(基于这些答案: one 、 two 、 three ;和 Python documentation )是(以防万一:所有代码片段在 Pytho
关于导入“from flask_restplus import Api, Resource” api getting cannot import name 'cached_property from
在带有 python 3.6.8 的 Ubuntu 18.04 上,尝试安装 Airflow。当我运行airflow initdb命令时,抛出以下错误 Traceback (most recent c
从 official documentation : Werkzeug is a WSGI utility library for Python. 但是,当我运行 Flask Web 应用程序时,我注
Flask 的新手,正在学习描述如何制作 REST API 的类(class)。 类(class)作者建议使用 safe_str_cmp来自身份验证章节中的 werkzeug.security。 如果
我正在寻找一种在网页中嵌入python解释器的方法。具体来说,类似于textarea/REPL的东西,它可以访问Django模板的作用域。 Werkzeug做了类似的事情,但是我找不到任何关于嵌入过程
我有以下用于将文件返回给客户端的 Werkzeug 应用程序: from werkzeug.wrappers import Request, Response @Request.application
我的 flask 应用程序中具有以下路由 from foo import get_foo @app.route("/foo/") def foo_id(id): return render_t
我目前正在使用一个 Javascript 应用程序,该应用程序必须使用 Werkzeug 对 Web 服务进行跨域请求(我可以访问 javascript-client 和 werkzeug-serve
我有以下从 http POST 保存的文件,我想使用 werkzeug parse_form_data() 使用 Python 进行解析。请注意,我不是通过请求而是通过文件获取它。由于其他原因,我无法
当我遇到 Werkzeug Debugger 时,我正在比较 CherryPy 和 Flask ,我真的很喜欢。让我惊奇的是: 是否可以将 Werkzeug 的调试器集成到 CherryPy 中?如果
我想实现一个基于 WSGI/Werzeug 的 Web 应用程序,并且需要帮助实现基于表单的身份验证。我找到了 repoze.who 并认为它解决了我的大部分问题。它适用于我将用于我的数据库代码的 S
我想对 request.args 和 request.form 使用可变字典。 Werkzeug 和 Flask 为此数据创建一个 ImmutableMultiDict。有没有办法让它可变? 最佳答案
我正在构建一个使用 werkzeug's hashing functions 的 Python 应用程序. User 模型示例: class User(db.Model): __tablena
我正在使用 flask 和 werkzeug。为了监控从 sqlalchemy 发出的 sql 语句,我设置了一个 logging.basicConfig() 记录器并附加了 before_curso
我有一个 Flask 应用程序,它为 Django 消费者提供 API。我用 requests library在我的消费者中点击 API。 我的问题是这样的:当我测试我的 API 时,我在 reque
首先,我想确保我正确理解特征分配。分配的本地代理功能通过线程内的模块(包)共享变量(对象)。我说得对吗? 其次,用法对我来说仍然不清楚,可能是因为我误解了一个赋值。我用 flask 。如果我有两个(或
当我将表单数据发送到我的 Flask 应用程序时,出现以下错误。它说它将使用 UTF-8 编码,但语言环境已经是 UTF-8。这个错误是什么意思? /home/.virtualenvs/project
我想通过 werkzeug 传输一个大文件. 目前我的 wsgi 应用程序看起来像这样: from werkzeug.wrappers import Request, Response from we
我正在使用基于 Werkzeug 的 Flask 微框架,它使用 Python。 在每个受限页面之前都有一个装饰器来确保用户已登录,如果他们没有登录,当前会将他们返回到登录页面,如下所示: # Dec
我是一名优秀的程序员,十分优秀!