3

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

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

当前 URL 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)

一切看起来都很标准。这有什么问题?感谢任何帮助我已经绞尽脑汁。

4

0 回答 0