django图片上传路径及访问路径问题
使用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
问题解决。