使用默认的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)
一切看起来都很标准。这有什么问题?任何帮助都表示赞赏我绞尽脑汁。