【发布时间】:2016-10-17 09:48:00
【问题描述】:
我在 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/ 端点上“发布”时,会创建用户,并且我可以从管理面板中的 url 在浏览器中看到图像。但是当我查看我的项目目录时,图像不存在。我无法弄清楚图像位置。我很确定图像已上传到我的计算机中,因为我尝试从 LAN 上的其他设备上传图像,并且在与另一台计算机断开连接后能够(从浏览器)访问它。
请帮忙。
【问题讨论】:
-
什么是 BASE_DIR?
标签: python django image django-rest-framework