【问题标题】:FileField() Error when trying to upload file using GAE and DjangoFileField() 尝试使用 GAE 和 Django 上传文件时出错
【发布时间】:2011-02-04 13:23:20
【问题描述】:

你好 Stack Overflow 社区!!

我正在尝试将文件上传到 GAE,并且我正在使用 Django。当我运行以下代码时,它会返回此错误:

Tried upload in module pathway.app.views. 
Error was: 'module' object has no attribute 'FileField'

当我在谷歌上搜索解决方案时,我找到了this,但这个问题应该有 现在已经修复了吧?

目前我不确定我做错了什么,我是 GAE、python 和 Django 的新手,因此我们将不胜感激!

如果有人对此问题有更好的解决方案,请告诉我。对于这样一个简单的任务,代码似乎太多了。

models.py

class UploadModel(db.Model):
    title = db.StringProperty()
    file = db.BlobProperty()

    blobl = db.BlobProperty()

    modified_on = db.DateTimeProperty(auto_now_add= 1)
    modified_by = db.UserProperty()

views.py

def upload(request):
if request.method == 'POST':
     form = form.UploadFileForm(request.POST, request.FILES)
     if form.is_valid():
        handle_uploaded_file(models.db.Blob(request.FILES['file']))
        return HttpResponseRedirect('/success/url/')
else:
     form = form.UploadFileForm()

files = models.UploadModel.all().order('-modified_on').fetch(20)
payload = dict(files = files)
return render("upload.html",payload)

form.py

from django import newforms as forms import models

class UploadFileForm(forms.Form):
    title = forms.CharField(max_length=50)
    file  = forms.FileField()

【问题讨论】:

  • 你为什么使用这么旧版本的Django? GAE 从 2009 年开始支持 Django 1.1。
  • 我不相信我使用的是旧版本。我想我可能做的是查看旧的示例代码。您知道更好的解决方案吗?

标签: python django google-app-engine


【解决方案1】:

您使用的是 Google App Engine 中包含的 Django 版本,即 0.96.4,该版本已有四年历史,来自于 newforms 库包含对文件字段的支持之前(并且在它被重命名为简单的 forms 之前) )。

在您的 GAE 项目目录中安装最新的 Django 版本并改用它。

【讨论】:

  • Django 是最新的。我相信我已经研究了非常古老的示例代码。你知道正确的进口吗?或者我能找到文档吗?
  • 抱歉,如果您在from django import newforms 那里没有错误,那么您使用的是旧版本。在 1.0 版中,Newforms 已重命名为表单。
  • 只使用“from django import forms”仍然给我同样的错误
  • 通过在 python 控制台上运行命令 django.VERSION 它返回“(1, 2, 4, 'final', 0)"。这不是最新版本吗?
猜你喜欢
  • 2021-05-21
  • 2017-08-27
  • 2022-06-23
  • 2018-04-10
  • 1970-01-01
  • 1970-01-01
  • 2018-04-18
  • 2013-05-31
  • 1970-01-01
相关资源
最近更新 更多