【问题标题】:How to retrieve URL fragment parameters in drf APIView?如何在 drf APIView 中检索 URL 片段参数?
【发布时间】:2022-01-21 12:37:31
【问题描述】:

我通过继承APIView 类在django 中为instagram 帐户连接创建了一个回调视图。

instagram 帐户成功连接后,facebook 将我重定向到 InstagramConnectCallbackView,并将响应数据包含为 URL 片段。

网址:

http://localhost:8000/v1/instagram-connect/callback/?#access_token=EAAN....&data_access_expiration_time=1650543346&expires_in=6254&state=eyd...

但我不知道如何将请求中的 URL 片段读入get 方法。

回调视图:

class InstagramConnectCallbackView(APIView):
    permission_classes = (permissions.AllowAny,)
    version = settings.FACEBOOK_GRAPH_API_VERSION

    def get(self, request, format=None):
        ....

我尝试了以下方法:

request.get_full_path() # returns `/v1/instagram-connect/callback/`
request.query_params()  # returns `{}`

我们将不胜感激。

【问题讨论】:

  • 你试过这样request.GET['access_token']
  • @AnkitTiwari request.GET['access_token'] 不起作用,因为 request.GET 返回查询参数并且我的访问令牌在片段参数中。

标签: python django django-rest-framework


【解决方案1】:

你可以使用query_params作为

request.query_params.get('your_key_name')

如果你想要default,那么你可以使用

self.request.query_params.get('your_key_name', None)

在您的情况下,您可以get 类似的值

access_token = self.request.query_params.get('access_token', None)
data_access_expiration_time = self.request.query_params.get('data_access_expiration_time', None)
expires_in = self.request.query_params.get('expires_in', None)

and so on ...

【讨论】:

  • 它不起作用,因为 request.query_params 返回查询参数并且我的访问令牌在片段参数中。
  • 您好@AjayLingayat,通过查看您提供的网址,您的access_token 位于? 之后,因此它被称为参数,了解更多关于parametrs 的信息
  • @AnkitTiwari no 访问令牌位于井号之后,因此使其成为 URL 片段参数。
  • 那么你的密钥应该是这样的request.GET['#access_token']
猜你喜欢
  • 2018-04-19
  • 2018-06-12
  • 1970-01-01
  • 1970-01-01
  • 2011-02-04
  • 1970-01-01
  • 2017-08-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多