使用ImageField作为图片上传字段:
class User(models.Model):
gender = (
('male', '男'),
('female', '女'),
)
name = models.CharField(max_length=128, unique=True, verbose_name='用户名')
password = models.CharField(max_length=256, verbose_name='密码')
email = models.EmailField(unique=True, verbose_name='邮箱')
sex = models.CharField(max_length=32, choices=gender, default='男', verbose_name='性别')
c_time = models.DateTimeField(auto_now_add=True, verbose_name='注册时间')
user_img = models.ImageField(upload_to='user_img/', verbose_name='头像') #用户头像
def __str__(self):
return self.name
class Meta:
ordering = ["-c_time"]
verbose_name = "用户"
verbose_name_plural = "用户"
在setting.py设置上传图片文件夹:
MEDIA_ROOT = os.path.join(BASE_DIR, 'login/uploads/login/')
MEDIA_URL = '/login/uploads/login/'
通过数据库迁移migrate能在后台正常展示头像字段:
在admin操作上传也能在指定文件夹上传正常的图片,查看图片的url也感觉正常,不能正常访问图片:
这问题到底出在哪里?
显然是url映射有问题了,在django2.0+中,在你的urlpatterns后面增加:
urlpatterns = patterns('',****
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
# 当然,在urls.py中,不要忘记增加:
from django.conf import settings
from django.conf.urls.static import static
问题解决~