小编Ald*_*und的帖子

Django Rest Framework 3需要字段行为

我已经阅读了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在序列化程序上获取字段值时获得KeyError TestSerializer.
序列化程序字段可能名称不正确,并且与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)

python django django-rest-framework

5
推荐指数
1
解决办法
4042
查看次数

通过链接进行 Cognito 无密码身份验证

我正在尝试通过没有密码的链接实现身份验证。例如,用户输入他的电子邮件 -> 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

5
推荐指数
1
解决办法
971
查看次数

Node.js 在 win 上写入控制台时挂起

Node.js在应用程序生命周期的某个阶段完全挂起对控制台的写入。它只发生在 Windows 上。在linux上一切正常。但是在任何控制台(例如cygwin, )中获胜时cmdpowershell它只是挂起并且对console.log或不执行任何操作process.stdout.write

它发生在Github 的 create-nuxt-app 中的安装后阶段钩子中:查看更多

任何对此处放置的 stdout 的写入都会在 Windows 上挂起应用程序。如果放在console.log这个 post hook 的顶部,它将挂在上面,所以 post hook 中的代码并不重要。
它不是在一台 Windows PC 上发生的孤立行为,而是发生在不同用户的大多数(或全部)Windows PC 上。

这种行为的原因是什么以及如何使其发挥作用?

javascript windows node.js

5
推荐指数
1
解决办法
677
查看次数

JAXB为每个元素生成带有名称空间的xml

我如何使用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)

java xml namespaces jaxb xml-namespaces

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

base64在js中编码,在python中解码。Unicode问题

我在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 unicode encoding utf-8 python-2.x

0
推荐指数
1
解决办法
1343
查看次数