我已经阅读了drf3的更新日志,但对我来说仍然不清楚.以前我有以下序列化器:
class TestSerializer(serializers.Serializer):
att1= serializers.CharField()
att2= serializers.CharField()
att3= serializers.CharField(required=False)
Run Code Online (Sandbox Code Playgroud)
当我传递只有att1和att2值的对象时 - 它工作正常,没有错误,输出中没有属性.但现在,如果我不参加att3我有错误
尝试
att3在序列化程序上获取字段值时获得KeyErrorTestSerializer.
序列化程序字段可能名称不正确,并且与EasyDict实例上的任何属性或键都不匹配.
原始异常文本是:att3'.
但根据发布说明:
required = False:输入中不需要存在该值
所以代码似乎对我有用或者我不明白.
data = TestSerializer(s.get_results()).data
Run Code Online (Sandbox Code Playgroud)
哪里有get_results的EasyDict实例缺少att3:
class EasyDict(dict):
def __init__(self, d=None, **kwargs):
if d is None:
d = {}
if kwargs:
d.update(**kwargs)
for k, v in d.items():
setattr(self, k, v)
# Class attributes
for k in self.__class__.__dict__.keys():
if not (k.startswith('__') and k.endswith('__')):
setattr(self, k, getattr(self, k))
def __setattr__(self, name, value):
if isinstance(value, (list, tuple)):
value = …Run Code Online (Sandbox Code Playgroud) 我正在尝试通过没有密码的链接实现身份验证。例如,用户输入他的电子邮件 -> cognito 发送一封带有用户可以单击并登录的链接的电子邮件。它
Cognito 通过自定义挑战支持它。例如https://aws-amplify.github.io/amplify-js/media/authentication_guide#using-a-custom-challenge
我已经创建了与我的认知池相关联的DefineAuthChallenge, CreateAuthChallenge, VerifyAuthChallengelambda 函数。CreateAuthChallenge生成发送到用户电子邮件和站点链接的代码。
接下来我计划从网站上的 url 中获取该代码并通过它像在文档中一样登录用户
Auth.signIn(username)
.then(user => {
if (user.challengeName === 'CUSTOM_CHALLENGE') {
Auth.sendCustomChallengeAnswer(user, challengeResponse)
.then(user => console.log(user))
.catch(err => console.log(err));
} else {
console.log(user);
}
})
.catch(err => console.log(err));
Run Code Online (Sandbox Code Playgroud)
但问题就在这里。 Auth.sendCustomChallengeAnswer需要从Auth.signIn. 但是,如果用户只是单击电子邮件中的链接,则根本不会有任何用户对象。并且放大 lib 不保存该中间会话用户对象,因此在页面重新加载时丢失了。它仅在身份验证完成后保存到其存储https://github.com/aws-amplify/amplify-js/blob/master/packages/amazon-cognito-identity-js/src/CognitoUser.js#L175
所以问题是如何Auth.signIn在页面重新加载时从函数中保存和重建用户对象。或者是否有更好的方法通过链接登录而无需密码?
authentication amazon-web-services amplifyjs amazon-cognito aws-amplify
Node.js在应用程序生命周期的某个阶段完全挂起对控制台的写入。它只发生在 Windows 上。在linux上一切正常。但是在任何控制台(例如cygwin, )中获胜时cmd,powershell它只是挂起并且对console.log或不执行任何操作process.stdout.write。
它发生在Github 的 create-nuxt-app 中的安装后阶段钩子中:查看更多。
任何对此处放置的 stdout 的写入都会在 Windows 上挂起应用程序。如果放在console.log这个 post hook 的顶部,它将挂在上面,所以 post hook 中的代码并不重要。
它不是在一台 Windows PC 上发生的孤立行为,而是发生在不同用户的大多数(或全部)Windows PC 上。
这种行为的原因是什么以及如何使其发挥作用?
我如何使用jaxb使用以下模式生成xml。
<NS1:getRatesResponse xmlns:NS1="http://mynamespaceTypes">
<response>
<NS2:rates xmlns:NS2="http://mynamespace">
<currency>USD</currency>
</NS2:rates>
<NS3:rates xmlns:NS3="http://mynamespace">
<currency>EUR</currency>
</NS3:rates>
<NS4:rates xmlns:NS4="http://mynamespace">
... etc
</response>
Run Code Online (Sandbox Code Playgroud)
我不知道如何告诉jaxb每个新项目都应该是具有相同名称空间的NS(n + 1)。更改xml格式不是一种选择,因为它是外部的。
JAXB可以正确解析此xml,但是在使用相同的类进行生成时,它会像这样生成:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns3:getRatesResponse
xmlns:ns2="http://mynamespaceTypes"
xmlns:ns3="http://mynamespace">
<response>
<ns2:rates>
<currency>EUR</currency>
</ns2:rates>
<ns2:rates>
<currency>USD</currency>
</ns2:rates>
</response>
</ns3:getRatesResponse>
Run Code Online (Sandbox Code Playgroud) 我在js中有以下字符串。
*"form-uploads/2015 Perry's Awärds Letter.jpg"*
Run Code Online (Sandbox Code Playgroud)
它有一个ä符号。
当我使用btoa(在chrome中)在js中对其进行编码时,我得到以下信息: “ Zm9ybS11cGxvYWRzLzIwMTUgUGVycnkncyBBd + RyZHMgTGV0dGVyLmpwZw ==”
当我尝试用python对其进行解码时,我得到以下信息:
In[16]: base64.b64decode('Zm9ybS11cGxvYWRzLzIwMTUgUGVycnkncyBBd+RyZHMgTGV0dGVyLmpwZw==')
Out[16]: "form-uploads/2015 Perry's Aw\xe4rds Letter.jpg"
Run Code Online (Sandbox Code Playgroud)
因此,ä迷路了,如果我尝试对该字符串进行解码,则会utf-8出错。
In[18]: base64.b64decode('Zm9ybS11cGxvYWRzLzIwMTUgUGVycnkncyBBd+RyZHMgTGV0dGVyLmpwZw==').decode('utf-8')
UnicodeDecodeError: 'utf8' codec can't decode byte 0xe4 in position 28: invalid continuation byte
Run Code Online (Sandbox Code Playgroud)
解码后如何i获得正确utf-8 ä的python代码?
python ×2
amplifyjs ×1
aws-amplify ×1
django ×1
encoding ×1
java ×1
javascript ×1
jaxb ×1
namespaces ×1
node.js ×1
python-2.x ×1
unicode ×1
utf-8 ×1
windows ×1
xml ×1