如何在Django中上传大文件?

时间:2013-05-07 04:48:02

标签: django django-models django-admin

使用默认的FileField,只有在给定的图像文件非常小的情况下,才会成功从模型的管理页面上传。否则会抛出错误:

  

使用astrobanana.urls中定义的URLconf,Django按以下顺序尝试了这些URL模式:
  1. ^ $ [name ='index']
  2. ^(?P \ d +)/ $ [name ='comic']
  ......等等......

     

当前网址500.shtml与其中任何一个都不匹配。

请注意,我曾经使用过ImageField,但为了解决这个问题,我转而使用FileField,认为django可能禁止上传图片,因为它没有将其作为图像读取。

毋庸置疑,我很困惑。小图像工作和大图像抛出一个神秘的错误。 settings.py中的所有相关内容似乎都已定义且正确,尤其是在正确上传小图像时。但是,这是我目前的相关设置供参考。

MEDIA_ROOT = '/home/astroban/public_html/astrobanana/media/'
MEDIA_URL = 'http://astrobanana.com/media/'
FILE_UPLOAD_HANDLERS = (
        'django.core.files.uploadhandler.MemoryFileUploadHandler',
        'django.core.files.uploadhandler.TemporaryFileUploadHandler',
        )

FILE_UPLOAD_MAX_MEMORY_SIZE = 2621440
FILE_UPLOAD_PERMISSIONS = None
FILE_UPLOAD_TEMP_DIR = None

此外,以下是相关模型的代码:

    from django.db import models

    class ComicPost(models.Model):
        title = models.CharField(max_length=150)
        comic = models.FileField(upload_to='comics/')
        hovertext = models.CharField(max_length=150,blank=True,null=True)
        timestamp = models.DateTimeField()
        hits = models.IntegerField(editable=False,default=0)
        def save(self, *args, **kwargs):
            if not self.id:
                i = ComicPost.objects.all().order_by('-id')[0]
                self.id = i.id+1
            super(ComicPost, self).save(*args, **kwargs)
        def __unicode__(self):
            return self.title
        class Meta:
            ordering = ('-timestamp',)

......这是admin.py:

    from django.contrib import admin
    from astrobanana.comic.models import ComicPost

    class ComicPostAdmin(admin.ModelAdmin):
        list_display = ('title','timestamp','hits')

    admin.site.register(ComicPost,ComicPostAdmin)

一切看起来都很标准。这有什么问题?任何帮助都表示赞赏我绞尽脑汁。

0 个答案:

没有答案