【问题标题】:TextProperty field in NDB gets "=" appended after every lineNDB 中的 TextProperty 字段在每行后附加“=”
【发布时间】:2014-04-21 22:46:09
【问题描述】:

我有一个很奇怪的案例,一天都无法调试。

在我的前端,我有带有 textarea 和提交按钮的表单。 提交时,textarea 字段被保存为ndb.TextProperty() 当我提交多行文本时,数据库中的文本在每一行都得到==20 字符。起初我以为它们是随机插入的,但似乎每 76 个字符就有一个 = 字符。

这真的很难调试,因为在我的 localhost 实例上它工作得非常好,但在已部署的版本上却不行。他们都是同步的。同样在我的 localhost 实例上,数据存储实体上的文本字段正确显示换行符和制表符,但在部署的版本上,数据存储字段显示为一个没有换行符或制表符的文本块。

谁能指导我正确的方向?

【问题讨论】:

  • 您能否在问题跟踪器上提交生产错误:code.google.com/p/googleappengine/issues/…
  • 看起来没有使用多部分 mime 表单,并且您有文本填充。您的表单是如何定义的,您使用的是什么浏览器?
  • 感谢@Tim,这实际上是一个非常正确的猜测!在表单上,​​我还有一个文件输入和我的 enctype is 事实上"multipart/form-data"。有没有办法让表单也处理文件和文本输入?
  • 是的,我们一直这样做。您可能需要显示更多详细信息以帮助您找出问题所在。我假设你的方法是 POST 而不是 GET。
  • 这是一个 POST 方法,表单有文件或文本的输入。当文件输入为空时,用户提交文本,反之亦然。如果我没有将 enctype 设置为"multipart/form-data",它会正确处理文本,但我无法提交文件。我在服务器端的处理程序继承了BlobstoreUploadHandlerwebapp2.RequestHandler。谢谢!

标签: google-app-engine app-engine-ndb


【解决方案1】:

哦,BlobStoreHandler,您在最初的问题中没有提到这一点。

好的,这是你的问题。

我不相信你可以将两者结合起来。如果您要上传到 Blobstore,则不能执行其他表单元素,因为上传被定向到 BlobStore 服务。

来自文档

用户通过提交一个 HTML 表单来创建一个 blob,其中包含一个 或更多文件输入字段。您的应用程序调用 create_upload_url() 获取此表单的目的地(动作),传递函数 a 应用程序中处理程序的 URL 路径。当用户提交 表单,用户的浏览器将指定的文件直接上传到 Blobstore。 Blobstore 重写用户的请求并存储 上传的文件数据,将上传的文件数据替换为一个或多个 对应的 blob 键,然后将重写的请求传递给 您提供给 create_upload_url() 的 URL 路径中的处理程序。这个 handler 可以根据 blob key 做额外的处理。

因此,如果没有看到您的代码,很难准确地说出发生了什么,但我严重怀疑您是否可以实现您想要实现的目标。

【讨论】:

  • 我猜你是对的。我将修改我的逻辑,然后为文件和文本输入创建两个单独的处理程序。感谢您指引我正确的方向!
【解决方案2】:

我也遇到了同样的问题,

我以一种不优雅但实用的方式解决了它:

我对输入进行了替换;

这里是代码

input_html_text = unicode(self.request.get('text')).replace('=\r\n', '')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-06
    • 1970-01-01
    • 2014-08-09
    • 1970-01-01
    • 2015-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多