当前位置: 首页 > 面试题库 >

Django的REST框架HTTPS的绝对URL?

湛铭
2023-03-14
问题内容

即使页面是使用https加载的,托管api的服务器仍返回http作为绝对URL,这与django
rest框架有关吗?因为似乎没有任何明显的方法可以解决此问题。

与Meta类相关的url字段是相关的

class NewsSerializer(serializers.HyperlinkedModelSerializer):
    user = UserSerializer(read_only=True)
    source = serializers.CharField(source='get_source_url', read_only=True)
    comments_count = serializers.IntegerField(read_only=True)
    date_added = serializers.CharField(source='humanize_date_added',
                                       read_only=True)
    is_owner = serializers.SerializerMethodField()
    user_voted = serializers.SerializerMethodField()
    favorited = serializers.SerializerMethodField()
    image = serializers.SerializerMethodField()

    def create(self, validated_data):
        user = self.context['request'].user
        story = News(user=user, **validated_data)
        story.save()
        return story

    def get_is_owner(self, obj):
        user = self.context['request'].user
        if user.is_active and user == obj.user:
            return True
        return False

    def get_user_voted(self, obj):
        user = self.context['request'].user
        if user.is_active:
            return obj.user_voted(user)
        return None

    def get_favorited(self, obj):
        user = self.context['request'].user
        if user.is_active:
            return obj.is_favorite(user)


    class Meta:
        model = News
        fields = ('id', 'link', 'title', 'text', 'source', 'user',
                  'date_added', 'image', 'comments_count', 'url',
                  'upvotes', 'downvotes', 'user_voted', 'type',
                  'is_owner', 'favorited')
        read_only_fields = ('date_added')

我不确定是否与nginx有关,但我在配置中有这个

proxy_set_header   Host             $host;
proxy_set_header   X-Real-IP        $remote_addr;
proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;

问题答案:

您需要确保nginx转发客户端的请求方案,因为它将向Django发出常规的http请求。您需要在虚拟主机定义中添加以下行:

proxy_set_header X-Forwarded-Proto $scheme;


 类似资料:
  • 问题内容: 我无法将图像保存在此ImageField中。 发送回数据时: 模型 serializers.py view.py url.py 卷曲 问题答案: 您似乎在和处理程序中缺少序列化程序构造函数的参数。

  • 在我的ModelViewSet中,我试图排除我的租户字段,以防止用户看到租户id(来自django-simic-Multitenant)。但是,我不能开发通用的ModelSerializer,因为我总是需要在ModelSerializer类中定义模型Meta。我的源代码,工作(非通用)如下。我想实现以下任一选项: > 序列化器的工作原理是拾取实际的类模型,而不需要在序列化器的元类中指定模型 在默认

  • 我的用户模型中有几个字段是choice字段,并且正在尝试找出如何将其最好地实现到Django Rest框架中。 下面是一些简化的代码来显示我正在做什么。 基本上,我要做的是让get/post/put方法使用choice字段的display值,而不是代码,类似于下面的JSON。 我该怎么做呢?上面的代码不起作用。之前,我有这样的东西用于GET,但用于post/put会给我带来错误。我正在寻找如何这样

  • 我将Django REST框架工具包与Django1.11一起使用,并尝试根据URL过滤结果。以下是我的设置: models.py: 我希望通过我的包模型的name字段来过滤结果,而不是使用以下内容: 我怎么才能做到这一点呢?

  • 我知道有关于Django Rest框架的答案,但我找不到解决问题的方法。 我有一个应用程序,它具有身份验证和一些功能。我向它添加了一个新的应用程序,它使用Django Rest框架。我只想在此应用程序中使用库。我还想提出POST请求,我总是收到以下回复: 我有以下代码: 我希望在不影响当前应用程序的情况下添加API。因此,我的问题是,我如何才能禁用此应用程序的CSRF?

  • 问题内容: 我有看起来像这样的模型: 我设法通过序列化器获得了所有类别的平面json表示形式: 现在,我要做的是让子类别列表具有子类别的内联json表示形式而不是其ID。django-rest-framework我该怎么做?我试图在文档中找到它,但它似乎不完整。 问题答案: 而不是使用ManyRelatedField,请使用嵌套的序列化程序作为字段: 如果要处理任意嵌套的字段,则应查看自定义文档的

  • 我是django的初学者,在官网做了基础教程。 我想学习django rest框架,看到这里也有很棒的教程-http://www.django-rest-framework.org/#requirements. 有一件事我想不通——我如何安装框架和其他必要的东西?我正在脱机工作,所以我需要手动下载所有库/包,然后安装它们。(无法使用pip安装和github克隆) 关于我需要下载什么以及如何安装它才