moh*_*moh 1 python django django-rest-framework
我上传了一些文件到服务器你可以看到地址:
\n\n其结果是:
\n\n "product_video": [\n {\n "product": 12,\n "name": "backup",\n "file": "/upload/user_1/backup.zip",\n "video_length": null,\n "is_free": false\n },\n {\n "product": 12,\n "name": "backup",\n "file": "/upload/user_1/backup_9um5Gwm.zip",\n "video_length": null,\n "is_free": false\n }\n ]\nRun Code Online (Sandbox Code Playgroud)\n\n"file": "/upload/user_1/backup.zip",
你能告诉我如何将其更改为绝对网址,例如:
\n\nlocalhost:8000/upload/user_1/backup.zip",
我们有一些函数 linke 在 django 中获取绝对 url 我不关心 drf
\n\n它是我的序列化器类:
\n\nclass ProductSerializer(ModelSerializer):\n product_ratings = ProductRatingsSerializer(many=True, read_only=True)\n product_video = ProductVideoSerializer(many=True, read_only=True)\n author = serializers.SerializerMethodField()\n\n def get_author(self, obj):\n return obj.author.first_name + \' \' + obj.author.last_name\n\n def get_category(self, obj):\n return obj.category.title\n\n\n class Meta:\n model = Product\n fields = [\n \'product_id\',\n \'author\',\n \'title\',\n \'mini_description\',\n \'you_learn\',\n \'you_need\',\n \'full_description\',\n \'price\',\n \'video_level\',\n \'video_length\',\n \'created_date\',\n \'updated_date\',\n \'product_ratings\',\n \'product_video\'\n ]\n read_only_fields = [\'product_id\', \'created_date\', \'updated_date\', \'author\',\n \'product_ratings\']\n\n def validate_title(self, value):\n if self.context[\'request\']._request.method == \'POST\':\n qs = Product.objects.filter(title__iexact=value)\n if self.instance:\n qs.exclude(pk=self.instance.pk)\n if qs.exists():\n raise serializers.ValidationError("this title is already used")\n return value\nRun Code Online (Sandbox Code Playgroud)\n\n产品视频序列化器: \xe2\x80\x8c \xe2\x80\x8c \xe2\x80\x8c \xe2\x80\x8c \xe2\x80\x8c \xe2\x80\x8c
\n\nclass ProductVideoSerializer(ModelSerializer):\n class Meta:\n model = ProductVideo\n fields = [\n \'product\',\n \'name\',\n \'file\',\n \'video_length\',\n \'is_free\',\n ]\nRun Code Online (Sandbox Code Playgroud)\n\n\xe2\x80\x8c \xe2\x80\x8c \xe2\x80\x8c \xe2\x80\x8c \xe2\x80\x8c \xe2\x80\x8c \xe2\x80\x8c \xe2\x80\x8c \xe2 \x80\x8c \xe2\x80\x8c \xe2\x80\x8c \xe2\x80\x8c \xe2\x80\x8c \xe2\x80\x8c \xe2\x80\x8c \xe2\x80\x8c \xe2\x80 \x8c \xe2\x80\x8c \xe2\x80\x8c \xe2\x80\x8c \xe2\x80\x8c \xe2\x80\x8c \xe2\x80\x8c \xe2\x80\x8c \xe2\x80\x8c \xe2\x80\x8c \xe2\x80\x8c \xe2\x80\x8c \xe2\x80\x8c \xe2\x80\x8c \xe2\x80\x8c \xe2\x80\x8c \xe2\x80\x8c \xe2 \x80\x8c \xe2\x80\x8c \xe2\x80\x8c \xe2\x80\x8c \xe2\x80\x8c \xe2\x80\x8c \xe2\x80\x8c \xe2\x80\x8c \xe2\x80 \x8c \xe2\x80\x8c \xe2\x80\x8c \xe2\x80\x8c \xe2\x80\x8c \xe2\x80\x8c \xe2\x80\x8c \xe2\x80\x8c \xe2\x80\x8c \xe2\x80\x8c \xe2\x80\x8c \xe2\x80\x8c \xe2\x80\x8c \xe2\x80\x8c \xe2\x80\x8c \xe2\x80\x8c \xe2\x80\x8c \xe2 \x80\x8c \xe2\x80\x8c \xe2\x80\x8c \xe2\x80\x8c \xe2\x80\x8c \xe2\x80\x8c \xe2\x80\x8c \xe2\x80\x8c \xe2\x80 \x8c \xe2\x80\x8c \xe2\x80\x8c
\nSerializerMethodField您可以在课堂上使用 a ProductVideoSerializer。
class ProductVideoSerializer(ModelSerializer):
file_abs_url = serializers.SerializerMethodField()
class Meta:
model = ProductVideo
fields = [
'product',
'name',
'file_abs_url',
'video_length',
'is_free',
]
def get_file_abs_url(self, obj):
request = self.context.get('request')
return request.build_absolute_uri(obj.file.url)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3113 次 |
| 最近记录: |