python - build_attrs() 得到了一个意外的关键字参数 'type'

标签 python django paypal

我正在使用 django 框架并尝试集成一个 paypal 支付网关。但是我收到了这个错误

build_attrs() got an unexpected keyword argument 'type'

Django 版本:1.11.11
Python版本:3.6.3
异常值:build_attrs() 得到了一个意外的关键字参数“type”
异常位置:/home/iuser/anaconda3/lib/python3.6/site-packages/paypal/standard/widgets.py in render, line 35

from django import forms
try:
    from django.forms.utils import flatatt # Django 1.7 and later
except ImportError:
    from django.forms.util import flatatt # earlier

from django.utils.safestring import mark_safe
from django.utils.encoding import force_text


class ValueHiddenInput(forms.HiddenInput):
    """
    Widget that renders only if it has a value.
    Used to remove unused fields from PayPal buttons.
    """

    def render(self, name, value, attrs=None):
        if value is None:
            return u''
        else:
            return super(ValueHiddenInput, self).render(name, value, attrs)


class ReservedValueHiddenInput(ValueHiddenInput):
    """
    Overrides the default name attribute of the form.
    Used for the PayPal `return` field.
    """

    def render(self, name, value, attrs=None):
        if value is None:
            value = ''
        final_attrs = self.build_attrs(attrs, type=self.input_type)
        if value != '':
            final_attrs['value'] = force_text(value)
        return mark_safe(u'<input%s />' % flatatt(final_attrs))

最佳答案

build_attrs 函数已按照 release notes [Django-doc] 中的规定进行更改:

The signature of private API Widget.build_attrs() changed from extra_attrs=None, **kwargs to base_attrs, extra_attrs=None.

您需要将调用更改为:

class ReservedValueHiddenInput(ValueHiddenInput):
    """
    Overrides the default name attribute of the form.
    Used for the PayPal `return` field.
    """

    def render(self, name, value, attrs=None):
        if value is None:
            value = ''
        final_attrs = <b>self.build_attrs(attrs, {'type': self.input_type})</b>
        if value != '':
            final_attrs['value'] = force_text(value)
        return mark_safe(u'<input%s />' % flatatt(final_attrs))

关于python - build_attrs() 得到了一个意外的关键字参数 'type',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52136525/

相关文章:

python - 如何在小于 numpy 数组维度的 bool 数组子集上索引 numpy 数组?

python - 通过矩阵查找所有路径

django - Django 中多个模型的单个自定义管理器

python - 保存到 Django 中的模型后返回主键

paypal - 将现有的经常性捐款导入 Paypal

python - 无法在窗口中显示进度条

python - 无法使用Python通过Alpha-vantage获取实时日期

django - 无法在 Django 开发服务器中提供来自/static URL root 的内容

java - paypal API信用卡直接支付到paypal账户

c# - 使用 Paypal 和 ASP.Net