Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 存储为unicode的oAuth2凭据_Python_Django_Oauth_Double Click - Fatal编程技术网

Python 存储为unicode的oAuth2凭据

Python 存储为unicode的oAuth2凭据,python,django,oauth,double-click,Python,Django,Oauth,Double Click,我正在存储oauth2凭据,以便以后可以创建服务 当前我的模型如下所示: from django.db import models from oauth2client.contrib.django_util.models import CredentialsField from south.modelsinspector import add_introspection_rules class oAuth(models.Model): siteid = models.CharField

我正在存储oauth2凭据,以便以后可以创建服务

当前我的模型如下所示:

from django.db import models
from oauth2client.contrib.django_util.models import CredentialsField
from south.modelsinspector import add_introspection_rules

class oAuth(models.Model):
    siteid = models.CharField(max_length=100L, primary_key=True)
    credential = CredentialsField()

    add_introspection_rules([],["^oauth2client\.contrib\.django_util\.models\.CredentialsField"])
当我尝试保存凭据时:

credential = flow.step2_exchange(code)
storage = DjangoORMStorage(oAuth, 'siteid', site_id, 'credential')
storage.put(credential)
在我的数据库中,存储了一个unicode字符串,该字符串不能使用以下方法转换为oauth对象:

storage = DjangoORMStorage(oAuth, 'siteid', site_id, 'credential')
credential = storage.get()
return credential
我正在获取以前存储的unicode凭据,我只是无法对其执行.authorize方法,这是我需要执行的操作


我在什么地方弄糊涂了吗?

请确保您的数据库已设置为存储
utf-8
。Django需要这个


我花了一段时间才发现(在询问堆栈溢出之前,我已经为此挣扎了一天左右),但是

返回的unicode需要使用我通过实际调用找到的

解决方案:

storage = DjangoORMStorage(oAuth, 'siteid', site_id, 'credential')
credential = storage.get()
credential = CredentialsField().to_python(credentials)
return credential

credential
现在可以作为常规的oauth对象调用

我的问题是,当我调用storage.get()时,我得到的是unicode而不是原始的oauth对象,因此我不能在其上调用
.authorize()
,我不确定是否需要使用unicode并构建oauth对象,但我找不到任何关于它的文档。我已经检查了编码,它是cp1252,但是我的所有其他表都是相同的编码,其他一切似乎都正常工作,忽略我之前的评论。我现在看到
DjangoORMStorage
来自lib本身。我没有主意了。:-)看起来,存储的.get()实际上必须返回一个oauth对象,这就是为什么我不理解它是如何返回unicode的