小编mor*_*ing的帖子

如何将request.POST转储到dict,以维护多个值字段?

我想将ModelForm数据存储在中的数据库中JSONField,以便以后可以根据此数据创建对象,只需调用:

form = ModelForm(data_from_jsonfield_as_querydict)
if form.is_valid():
    object = form.save()
Run Code Online (Sandbox Code Playgroud)

问题一:

我在POST中有数据:

>>> print request.POST
{u'field-1': u'value1', u'field-2': [u'value-2a', u'value-2b']}
Run Code Online (Sandbox Code Playgroud)

而且我必须将其转换QueryDictdict。但是,如果我打电话给request.POST.dict()我,我会失去字段2的列表值:

>>> print request.POST.dict()
{'field-1': 'value1', 'field-2': 'value-2b'}
Run Code Online (Sandbox Code Playgroud)

我尝试使用,request.POST.getlist但随后获得所有值作为列表:

>>> for k in request.POST.keys():
...     print request.POST.getlist(k)
[u'value1']
[u'value-2a', u'value-2b']
Run Code Online (Sandbox Code Playgroud)

我什至无法检查上述循环中的给定值是否为列表实例,因为request.POST.get(k)如果值是list且另一方面针对每个字段request.POST[k]返回MultiValueDictKeyError,则不返回错误。

我想到的唯一解决方案是循环遍历所有获得的字段getlist()并将一值列表转换为字符串,但是在我看来,这似乎有点过分。

问题2:

假设问题1已解决,并且我已经dict将表单数据存储在数据库中,如下所示:

# object.data
{u'field-1': u'value1', u'field-2': [u'value-2a', u'value-2b']}
Run Code Online (Sandbox Code Playgroud)

当我想使用上述内容dict作为表单数据创建对象时,我必须将其转换为do QueryDict,这可以通过以下方式简单地完成:

querydict = QueryDict('', …
Run Code Online (Sandbox Code Playgroud)

python django dictionary

5
推荐指数
2
解决办法
7271
查看次数

Facebook API – 如何获取页面范围的用户 ID(ids_for_pages 为空)?

我的目标是通过将我的 Facebook 页面上发布的帖子与我的数据库中的用户 ID 进行匹配来识别这些帖子的作者,这些 ID 是应用程序范围的用户 ID (ASID)

\n\n

我已经生成了用户访问令牌(通过应用程序)并将其扩展为长期访问令牌。然后,我为通过 列出的用户 \xe2\x80\x93 管理的所有页面生成了页面访问令牌GET user/accounts

\n\n

首先,我检查帖子的作者({PID}是 Facebook 帖子 ID):

\n\n
curl -X GET \'https://graph.facebook.com/v6.0/{PID}?fields=admin_creator&access_token={ACCESS_TOKEN}\'\n
Run Code Online (Sandbox Code Playgroud)\n\n

这给出了我ID的用户,我认为这是页面范围的用户 ID (PSID)

\n\n

为了进行匹配,我尝试为数据库中所有用户管理的所有页面建立PSID :

\n\n
curl -X GET \'https://graph.facebook.com/v6.0/{UID}/ids_for_pages?access_token={ACCESS_TOKEN}&appsecret_proof={APPSECRET_PROOF}\'\n
Run Code Online (Sandbox Code Playgroud)\n\n

其中{UID}是 user ASID{ACCESS_TOKEN}是 Page Access Token ,APPSECRET_PROOF是由 Page Access Token 和 App Secret 生成的哈希值。应用程序和页面归同一企业所有(必须使用ids_for_pages端点)。

\n\n

不幸的是,得到的回应是:

\n\n
{"data":[]}\n
Run Code Online (Sandbox Code Playgroud)\n\n

我已阅读文档 \xe2\x80\x93 https://developers.facebook.com/docs/facebook-login/connecting-accounts …

facebook facebook-graph-api facebook-apps

5
推荐指数
0
解决办法
1392
查看次数