python - 参数在传递给函数时从字典中消失

标签 python django session dictionary

在我的函数中,我从 session 中读取用户数据并将它们存储在字典中。接下来,我将它从 registration.backend 发送到“register”函数,但该函数以某种方式将其清空并抛出 KeyError。我的数据去哪儿了?来自函数调用“register”函数的代码:

data = request.session['temp_data']
email = data['email']

logging.debug(email)

password1 = data['password1']
userdata = {'email': email, 'password1': password1}

logging.debug(userdata)

backend = request.session['backend']

logging.debug(backend)

user = backend.register(userdata)

注册函数(全部来源:http://bitbucket.org/ubernostrum/django-registration/src/tip/registration/backends/default/init.py):

class DefaultBackend(object):
    def register(self, request, **kwargs):
        logging.debug("backend.register")
        logging.debug(kwargs)

        username, email, password = kwargs['email'], kwargs['email'], kwargs['password1']

调用它们后调试:

2010-07-09 19:24:35,020 DEBUG my@email.com
2010-07-09 19:24:35,020 DEBUG {'password1': u'a', 'email': u'my@email.com'}
2010-07-09 19:24:35,020 DEBUG <registration.backends.default.DefaultBackend object at 0x15c6090>
2010-07-09 19:24:35,021 DEBUG backend.register
2010-07-09 19:24:35,021 DEBUG {}

为什么数据会丢失?我做错了什么吗?

@为 Silent-Ghost 编辑

 register() takes exactly 2 arguments (3 given)

 112.  backend = request.session['backend']
 113. logging.debug(backend)
 114. user = backend.register(request, userdata) 

最佳答案

无需在 register 方法中乱用 **。您要做的只是将字典传递给 register 方法:

user = backend.register( request, userdata ) # you need to pass request as definition says

def register( self, request, userdata ): # note lack of **
    logging.debug("backend.register")
    logging.debug( userdata ) # should work as expected

    username, email, password = userdata['email'], userdata['email'], userdata['password1']

关于python - 参数在传递给函数时从字典中消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3215135/

相关文章:

python - 如何使用另一个数据帧的新值更新 pyspark 数据帧?

django - 为什么 Django 不使用我的 Registration/reset_password_done.html 模板?

php - 如何在 Wordpress 中使用 session_start?

jquery - 如果我设置 session ,启动 jquery 函数?

python - 为 Pandas 中的列添加具有重复值的数字

python - 马尔可夫分析、格式化

python - 在 Python 中压缩 `x if x else y` 语句

django - 是否可以在 Django 模板中的任何位置使用新创建的上下文变量?

python - 什么是 django.utils.functional.__proxy__ 对象以及它有什么帮助?

Javascript 页面刷新功能在整个代码中存在多个提交按钮的问题