小编Rah*_*pta的帖子

Django REST例外

我目前有一些基于Django REST Framework的视图代码.我一直在使用客户异常类,但理想情况下我想使用内置的Django REST异常.

从下面的代码中我觉得这可能不是最好或最干净的方式来利用REST Framework异常.

有没有人有任何好的例子,他们正在捕捉问题并使用REST内置异常干净地返回它们?

class JSONResponse(HttpResponse):
    def __init__(self, data, **kwargs):
       content = JSONRenderer().render(data)
       kwargs['content_type'] = 'application/json'
       super(JSONResponse, self).__init__(content, **kwargs)

def queryInput(request):
    try:
        auth_token = session_id = getAuthHeader(request)
        if not auth_token:
            return JSONResponse({'detail' : "fail", "error" : "No X-Auth-Token Found", "data" : None}, status=500)

        if request.method:
            data = JSONParser().parse(request)
            serializer = queryInputSerializer(data=data)

        if request.method == 'POST':
            if serializer.is_valid():
                input= serializer.data["input"]
                fetchData = MainRunner(input=input,auth_token=auth_token)
                main_data = fetchData.main()

            if main_data:
                return JSONResponse({'detail' : "success", "error" : None, "data" : main_data}, …
Run Code Online (Sandbox Code Playgroud)

django rest django-rest-framework

21
推荐指数
2
解决办法
2万
查看次数

如何从序列化程序输出中动态删除字段

我正在使用Django Rest框架开发API,我想动态删除序列化程序中的字段.问题是我需要根据另一个字段的值删除它们.我怎么能这样做?我有一个序列化器,如:

class DynamicSerliazer(serializers.ModelSerializer):
    type = serializers.SerializerMethodField()
    url = serializers.SerializerMethodField()
    title = serializers.SerializerMethodField()
    elements = serializers.SerializerMethodField()

    def __init__(self, *args, **kwargs):
        super(DynamicSerliazer, self).__init__(*args, **kwargs)
        if self.fields and is_mobile_platform(self.context.get('request', None)) and "url" in self.fields:
            self.fields.pop("url")
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我已经删除了字段"url",具体取决于请求是否已从移动平台完成.但是,我想根据"类型"值删除"元素"字段.我该怎么办?

提前致谢

django-serializer django-rest-framework

18
推荐指数
2
解决办法
8152
查看次数

在新的LinkedIn API策略更改后访问r_fullprofile

r_fullprofile在新API政策之后申请LinkedIn合作伙伴关系是唯一的访问方式吗?

我的应用程序目前正在使用它来获取用户"技能"而r_fullprofile不是r_basicprofile.

如果我只使用,我是否需要对新政策进行任何更改r_basicprofile

linkedin linkedin-api

13
推荐指数
2
解决办法
2万
查看次数

urls django中'^ $'和''之间的区别

django中以下两个url模式有什么区别?

url(r'^$', views.indexView, name='index'),

url(r'', include('registration.urls'))
Run Code Online (Sandbox Code Playgroud)

据我所知,'^ $'和''引用一个空字符串.'^ $'和''实际指定了什么?

python regex django django-urls

13
推荐指数
2
解决办法
1万
查看次数

LinkedIn OAuth异常范围NOT_AUTHORIZED r_fullprofile

一切顺利,直到今天我收到来自LinkedIn的电子邮件,表明一些重大的API变化.随后我在通过身份验证用户时看到了例外情况.LinkedIn.

以下是日志的例外情况

OAuth::Problem (Scope NOT_AUTHORIZED : r_fullprofile):
  oauth (0.4.7) lib/oauth/consumer.rb:178:in `request'
  oauth (0.4.7) lib/oauth/consumer.rb:194:in `token_request'
  oauth (0.4.7) lib/oauth/consumer.rb:136:in `get_request_token'
Run Code Online (Sandbox Code Playgroud)

用于获取请求令牌的OAuth逻辑.

consumer = OAuth::Consumer.new(LINKED_IN_API_KEY, LINKED_IN_SECRET_KEY,
                 {
                   :site               => "https://api.linkedin.com",
                   :scheme             => :header,
                   :http_method        => :post,
                   :request_token_path => "/uas/oauth/requestToken?scope=r_fullprofile",
                   :access_token_path  => "/uas/oauth/accessToken",
                   :authorizeEmapath     => "/uas/oauth/authorize"
                 })

### Exception occurs at this call.
request_token = consumer.get_request_token(:oauth_callback => callback_url)
Run Code Online (Sandbox Code Playgroud)

来自LinkedIn的电子邮件

在此输入图像描述

我的分析到现在为止

如果我将范围更改为r_basicprofile它工作正常但我没有获得skills经过身份验证的linkedin用户的信息.

为了满足API更改,我需要做些什么其他更改?

oauth linkedin oauth-2.0 ruby-on-rails-3.2 linkedin-api

11
推荐指数
2
解决办法
5826
查看次数

选择必须是可迭代的

我在使用 Django 和 Python 时遇到问题

我正面临错误.from_hour: (fields.E005) 'choices' must be an iterable containing (actual value, human readable name) tuples.有人可以帮助我了解错误是什么吗?我知道我是否发表评论from_hourto_hour运行

这是我的代码

WEEKDAYS = [
  (1, _("Monday")),
  (2, _("Tuesday")),
  (3, _("Wednesday")),
  (4, _("Thursday")),
  (5, _("Friday")),
  (6, _("Saturday")),
  (7, _("Sunday")),
]


weekday_from = models.IntegerField(choices=WEEKDAYS, unique=True)
weekday_to = models.IntegerField(choices=WEEKDAYS)
from_hour = models.IntegerField(choices=range(1,25))
to_hour = models.IntegerField(choices=range(1,25))

def get_weekday_from_display(self):
    return WEEKDAYS[self.weekday_from]

def get_weekday_to_display(self):
    return WEEKDAYS[self.weekday_to]
Run Code Online (Sandbox Code Playgroud)

python django

10
推荐指数
1
解决办法
1万
查看次数

限制我的移动应用程序访问的cloudfront signed url(GET Request)

我正在尝试使用签名网址将Amazon cloudfront的视频文件提供给我的应用用户.我已经使用文档创建了签名的URL ,它运行得非常好.生成的url具有签名,expires和keypair_id.

问题

我想要实现的是仅当请求从我的特定移动应用程序进入时才将视频文件提供给用户.我正在寻找一个解决方案来授权云端方面的请求(在已签名的URL上).

因此,如果用户尝试使用我们的移动应用访问标识的URL,我们将要服务于内容,但如果URL是从Web或其他任何移动客户端进行访问,我们想提出一个授权错误或404.

我已经浏览了文档和几个博客,希望实现上述目标,每个人都指出了我使用签名网址的方向.但是仍然可以通过浏览器直接访问网址.

此外,我想知道,为什么一个标识的URL具有签名作为GET参数,因为如果签名被删除的内容仍然是可以访问使用url没有GET查询参数.

Signed Url: http://d2z7g8y6l5f1j0.cloudfront.net/test_upload.mp4?Expires=1456828601&Signature=R3tljkRxGM9se2S4IJT908sT2BBGNJkpWE9IE-v1GAt-QY0WcaEVEY-OYvSSlhFK1ueNcWhgAscJQ7J~qUKZUt3XS5raKU3kj9STKYYzCemRRm1j5DE8XfhjRKRggSSw138F0lr~tDt~TLoJ7Pj9NNvoGl42jNNLaET7~d9pkAGAh-sNpoS1gz~d0CZTo41ZTFMIzshgZNxrWpCOR0PrLHfRALy2H9-Z9w4XfU4v66WEseVQ3FWyeXFyV0UO2S-KIXbe1ODiHFC6Ae6AJlWzoFfIGAxiLymmtUMJgeQHnu80u97ysMbbNYvek-S0tQBkkID3zC~tDQH~EjXPYcNUbA__&Key-Pair-Id=APKAINPV56WSGDECRTPQ

^^^ Serves the content

Original Url: http://d2z7g8y6l5f1j0.cloudfront.net/test_upload.mp4

^^^ Still serves the content
Run Code Online (Sandbox Code Playgroud)

上面的网址有什么区别?

进一步问题

我生成的已签名网址仍在提供内容,因此过期GET查询参数的重点是什么,或问题是我是否正确设置了网址.

我按照以下方法生成了我的签名网址:

from boto.cloudfront import CloudFrontConnection
from boto.cloudfront.distribution import Distribution

# establish cloudfront connection
cloudfront_connection = CloudFrontConnection('AWS_KEY', 'AWS_SECRET')
expiry_time = int(time.time() + 3000)

#get the distribution
distribution = Distribution(connection = cloudfront_connection, domain_name = '<specified_domain_name>', 'id' = '<specified distribution id>')

#create signed url
signed_url = distribution.create_signed_url(url = '<cloudfront_url>', keypair_id = '<cloudfront keypair_id>', expire_time = …
Run Code Online (Sandbox Code Playgroud)

url authorization amazon-s3 amazon-web-services amazon-cloudfront

9
推荐指数
1
解决办法
602
查看次数

LinkedIn API是否允许访问所有用户配置文件?

我们有兴趣将LinkedIn整合到我们的CRM数据库中,根据人名和当前公司名称查看人们到底在哪里(更换工作).这可能吗?据我所知,API受链接凭证的限制并且受到他/她连接的限制,这是对的吗?

如果它是正确的,我们可以访问任何LinkedIn API溢价来实现我们想要的吗?

我们知道LinkedIn有一个名为Sales Navigator的产品,基于该演示看起来很可能,但必须首先标记该人或类似的东西.

非常感谢您的反馈意见.

谢谢

api linkedin linkedin-api

7
推荐指数
1
解决办法
9934
查看次数

如何使用 Linkedin API 获取 Linkedin 推荐?

如何使用 PHP 获取 LinkedIn 推荐?

如何educations, recommendationsReceived, skills, twitterAccounts从 linkedIn API 检索用户个人资料数据?

如何输出这种类型的get:( 这是虚拟数据)

{
  "educations":  {
    "_total": 1,
    "values":  [
       {
        "degree": "MCA",
        "endDate":  {
          "year": 2010
        },
        "fieldOfStudy": "English",
        "id": 68487593,
        "schoolName": "Computer Studies",
        "startDate":  {
          "year": 2007
        }
      }
    ]
  },
  "firstName": "Firstname",
  "id": "k4AWESnyv",
  "recommendationsReceived":  {
    "_total": 1,
    "values":  [
       {
        "recommendationText": "Good Morning.",
        "recommender":  {
          "firstName": "First Name",
          "headline": "Student",
          "lastName": "patel",
          "pictureUrl": "https://media.licdn.com/mpr/mprx/0_V24ZjoIoyZaEFqbRgzWupnoHNs6ORLamtWosKRfVQR3qkss3v",
          "publicProfileUrl": "https://www.linkedin.com/pub/linkedinuser/17/5ba/23a"
        }
      }
    ]
  },
  "skills":  {
    "_total": …
Run Code Online (Sandbox Code Playgroud)

php linkedin-api

6
推荐指数
1
解决办法
3817
查看次数

在JSON输出中包含get_absolute_url值

刚进入Django Rest Framework.

我有一个简单的示例运行,其中通过REST API呈现模型.模型中没有相关字段,只是一堆字符串.

get_absolute_url()将该模型的值呈现给JSON输出的最简单方法是什么?

我正在serializers.HyperlinkedModelSerializer准备进入具有相关领域的更复杂的模型.

django django-rest-framework

6
推荐指数
1
解决办法
1284
查看次数