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  

 

问题解决。

posted @ 2020-02-17 21:23  凌石  阅读(534)  评论(0编辑  收藏  举报