图片上传到哪里?

2021-06-14 22:49:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我在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框架创建了一个序列化程序来注册一个新用户:

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/'

我的网址.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条回答
网友
1楼 ·

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

sudo find / -name userimages
网友
2楼 ·

用户上传的文件应该存储在MEDIA\u ROOT中,这是正确的。你知道吗

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

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

相关问题