gpt4 book ai didi

python - 如何在 Google App Engine 上的 django 中避免 NotImplementedError "Only tempfile.TemporaryFile is available for use"?

转载 作者:太空狗 更新时间:2023-10-29 20:52:55 26 4
gpt4 key购买 nike

我通过 use_library 在 Google App Engine 上使用 Django 1.1。这里没有使用 Django GAE helper、Django non-rel 或类似工具。 Django 处理 URL 路由、表单验证等,但我使用的是纯 App Engine 模型。

在我的一个 Django 表单中有一个 FileField,它有时似乎调用 django.core.files.uploadedfile.TemporaryUploadedFile。此类随后使用 tempfile.NamedTemporaryFile,这导致 App Engine 提升:

File "/base/python_runtime/python_dist/lib/python2.5/tempfile.py", line 45, in PlaceHolder
raise NotImplementedError("Only tempfile.TemporaryFile is available for use")

试图解决这个问题我采取了uploadedfile module来自 Google App Engine Helper for Django(不使用 NamedTemporaryFile)将其保存为应用程序目录和我的 _djangomain.py_ 中的 gae_uploadedfile.py > 我添加的文件:

from google.appengine.dist import use_library
use_library('django', '1.1')
(...)
import gae_uploadedfile
django.core.files.uploadedfile = gae_uploadedfile

djangomain.py 是我重定向所有 url 的文件 - 在 app.yaml 我有:

- url: /.*
script: djangomain.py

但这并没有帮助,我仍然得到这个异常。我做错了什么,在使用 django.forms 中的 FileField 时是否有其他解决方案可以避免此错误?

最佳答案

您需要使用以下内容更新 settings.py 文件以更改默认的 Django 行为:

# only use the memory file uploader, do not use the file system - not able to do so on
# google app engine
FILE_UPLOAD_HANDLERS = ('django.core.files.uploadhandler.MemoryFileUploadHandler',)
FILE_UPLOAD_MAX_MEMORY_SIZE = 2621440 # the django default: 2.5MB

更多信息在这里:FILE_UPLOAD_MAX_MEMORY_SIZEupload-handlers

如果您要上传图像,您将受到图像转换等 1MB 配额的限制。Quotas_and_Limits

关于python - 如何在 Google App Engine 上的 django 中避免 NotImplementedError "Only tempfile.TemporaryFile is available for use"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3586134/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com