Redis TypeError:必须是string或buffer,而不是None。

2024-04-26 14:21:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我对redis完全陌生,如果问题太简单,请接受我的道歉。在

我想在我的redis数据存储中设置一个django模型,然后在另一个视图函数中,我想获取它并再次使用它;但结果是:

TypeError: must be string or buffer, not None.

这是我在views.py中的代码:

connection = redis.Redis('localhost')    
def recharge_account(request):

     cur = recharge_form.cleaned_data['currency']
                amnt = recharge_form.cleaned_data['amount']
                user_profile = models.UserProfile.objects.get(user=models.User.objects.get(id=request.user.id))
                user_b_account, created = models.BankAccount.objects.get_or_create(
                    owner=user_profile,
                    cur_code=cur,
                    method=models.BankAccount.DEBIT,
                    name=request.user.username + '_' + cur + '_InterPay-account',
                    account_id=make_id()
                )
                #  saving the temporarily deposit in redis
                deposit_dict = {"account": user_b_account, "amount": amnt, "banker": user_profile,
                                "date": user_b_account.when_opened, "cur_code": cur}
                pickled_deposit_dict = pickle.dumps(deposit_dict)
                cached_deposit_name = str(user_profile.user_id) + "-cachedDeposit"
                connection.set(cached_deposit_name, pickled_deposit_dict)

    ....    




 def callback_handler(request, amount):
    #getting from redis
                        new_deposit = pickle.loads(
                            connection.get(str(user_profile.user_id) + "-cachedDeposit")) 
                        deposit = models.Deposit(account=new_deposit['account'], amount=new_deposit['amount'],
                                                 banker=new_deposit['banker'],
                                                 date=new_deposit['date'], cur_code=new_deposit['cur_code'])
                        deposit.save()
                       .....

我的问题是:我的程序有什么问题吗?在redis中保存django模型有什么问题吗?在

我该怎么做才能使这个功能正常工作,并获得保存的数据“不必是无”?在

提前谢谢


Tags: redisidnewgetmodelsrequestcodeaccount