我在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中看到浏览器中的图像。但是当我查看我的项目目录时,图像就不存在了。我无法弄清楚图像的位置。我很确定图像上传到我的计算机中,因为我尝试从局域网上的其他设备上传图像,并且能够在断开与其他计算机的连接后从浏览器访问它。
请帮忙。
答案 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 >>