使用 django paypal 获取错误 ('False', 'buy') KeyError at /

using django paypal getting error ('False', 'buy') KeyError at /

我想我收到这个错误是因为我在上下文变量中添加了第二个键,而 django paypal 不喜欢它。但说实话我真的不知道。 当我不在上下文变量中包含第二个键并像文档中那样保留 {'form':form} 时,它可以正常显示没有错误。但我确实需要模板中的 'document' 对象,但不知道该怎么做。 对不起,我没有添加模板。我似乎永远无法将它们粘贴到这里。

非常感谢对问题的任何了解。

这是风景

def video(request, document_id): 
document = Document.objects.get(id=document_id)

if request.user.id:
    d1 =datetime.datetime.now().time()
    t=d1.strftime('%y%m%d%h%m%s')
    pp_price = str(document.price)
    # What you want the button to do.
    paypal_dict = {
        "business": settings.PAYPAL_RECEIVER_EMAIL,
        "amount": pp_price + ".00",
        "item_number1":document_id,
        "item_number2":request.user.id,
        "item_name": document.name,
        "invoice": document.name+t,
        "notify_url": "http://blabla.com/paid/" + reverse('paypal-ipn'),
        "return_url": "http://blabla.com/myvideos/",
        "cancel_return": "http://blabla.com/video/"+document_id+"/",
    }
    form = PayPalPaymentsForm(initial=paypal_dict)
    context = {"form": form, "document":document }
    return render(request, "video.html", context)
else:
    return render_to_response('video.html',{'document': document},
                              context_instance=RequestContext(request))

抛出异常...

KeyError at /video/106/
('False', 'buy')
Request Method: GET
Request URL:    http://blabla.com/video/106/
Django Version: 1.6.4
Exception Type: KeyError
Exception Value:    
('False', 'buy')
Exception Location: /home/me/.local/lib/python2.7/site-packages/paypal/standard/forms.py in get_image, line 143
Python Executable:  /usr/local/bin/python
Python Version: 2.7.9
Python Path:    
['/home/me/webapps/blabla',
 '/home/me/webapps/blabla/src',
 '/home/me/webapps/blabla/lib/python2.7',
 '/home/me/lib/python2.7/pip-1.5.4-py2.7.egg',
 '/home/me/lib/python2.7',
 '/usr/local/lib/python27.zip',
 '/usr/local/lib/python2.7',
 '/usr/local/lib/python2.7/plat-linux2',
 '/usr/local/lib/python2.7/lib-tk',
 '/usr/local/lib/python2.7/lib-old',
 '/usr/local/lib/python2.7/lib-dynload',
 '/home/me/.local/lib/python2.7/site-packages',
 '/usr/local/lib/python2.7/site-packages',
 '/usr/local/lib/python2.7/site-packages/PIL']
Server time:    Tue, 28 Apr 2015 17:19:04 +0000
Traceback Switch to copy-and-paste view

/home/me/.local/lib/python2.7/site-packages/django/core/handlers/base.py in get_response
                    response = wrapped_callback(request, *callback_args, **callback_kwargs) ...
▶ Local vars
/home/me/webapps/blabla/src/signups/views.py in video
        return render(request, "video.html", context) ...
▶ Local vars
/home/me/.local/lib/python2.7/site-packages/django/shortcuts/__init__.py in render
    return HttpResponse(loader.render_to_string(*args, **kwargs),

这是一个难以追踪的错误,但它实际上与您在此处显示的代码无关。您似乎错误地设置了其中一项设置。从外观上看,在您的 settings.py 中,您有:

PAYPAL_TEST = 'True'

事实上,你应该:

PAYPAL_TEST = True

此变量必须是布尔值,而不是字符串。