图像上传到哪里?

时间:2016-10-17 09:48:01

标签: python django image django-rest-framework

我在django中创建了一个自定义用户模型:

class CustomUser(AbstractBaseUser, PermissionsMixin):
    email = models.EmailField(_('email address'), max_length=254, unique=True)
    first_name = models.CharField(_('first name'), max_length=30)
    image = models.ImageField(_('profile image'), upload_to='userimages/', default = 'user_default.jpeg')

现在我已经为django-rest-framework创建了一个序列化程序来注册一个新用户:

class UserRegistrationSerializer(serializers.ModelSerializer):
    password = serializers.CharField(style={'input_type': 'password'},
                                     write_only=True,
                                     validators=settings.get('PASSWORD_VALIDATORS'))
    image = serializers.ImageField(max_length=None, use_url=True)
    class Meta:
        model = User
        fields = tuple(User.REQUIRED_FIELDS) + (
            User.USERNAME_FIELD,
            User._meta.pk.name,
            'image',
            'password',
        )

    def create(self, validated_data):
        if settings.get('SEND_ACTIVATION_EMAIL'):
            with transaction.atomic():
                user = User.objects.create_user(**validated_data)
                user.is_active = False
                user.save(update_fields=['is_active'])
        else:
            user = User.objects.create_user(**validated_data)
        return user

我的媒体设置为:

import os

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'

我的'urls.py':

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^', include('app.urls')),
]+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

现在,当我在/ register / endpoint上'POST'时,用户就会被创建,我可以从管理面板的url中看到浏览器中的图像。但是当我查看我的项目目录时,图像就不存在了。我无法弄清楚图像的位置。我很确定图像上传到我的计算机中,因为我尝试从局域网上的其他设备上传图像,并且能够在断开与其他计算机的连接后从浏览器访问它。

请帮忙。

2 个答案:

答案 0 :(得分:1)

如果你想要的只是知道文件夹的位置,你可以运行以下命令(在基于linux的系统中):

sudo find / -name userimages

答案 1 :(得分:0)

您确定用户上传的文件应存储在MEDIA_ROOT中。

您可以通过启动Django shell并检查设置来检查此位置:

$ python manage.py shell
>>> from django.conf import settings
>>> settings.MEDIA_ROOT
<< snip: the media root location >>