Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 创建自定义aldryn_表单插件_Python_Django_Python 3.x_Django Cms_Divio - Fatal编程技术网

Python 创建自定义aldryn_表单插件

Python 创建自定义aldryn_表单插件,python,django,python-3.x,django-cms,divio,Python,Django,Python 3.x,Django Cms,Divio,首先,aldyn_表单对我的用户来说非常好。现在我想为Django CMS添加一个自定义的“range”元素()。我尝试了以下操作,但它没有呈现元素。我做错了什么 cms\u plugins.py: from aldryn_forms.cms_plugins import Field from cms.plugin_pool import plugin_pool from django.forms import Widget from django.utils.translation impor

首先,aldyn_表单对我的用户来说非常好。现在我想为Django CMS添加一个自定义的“range”元素(
)。我尝试了以下操作,但它没有呈现元素。我做错了什么

cms\u plugins.py

from aldryn_forms.cms_plugins import Field
from cms.plugin_pool import plugin_pool
from django.forms import Widget
from django.utils.translation import ugettext_lazy as _

from django import forms


class RangeWidget(Widget):
    def __init__(self, attrs=None):
        super().__init__(attrs)

    def render(self, name, value, attrs=None):
        return 'This should render, but it does not render'


class RangeForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        if 'instance' not in kwargs:  # creating new one
            initial = kwargs.pop('initial', {})
            initial['required'] = False
            kwargs['initial'] = initial
        super().__init__(*args, **kwargs)

    class Meta:
        fields = ['label', 'help_text', 'required', 'required_message', 'custom_classes', 'min_value', 'max_value']


class RangeElement(Field):
    widget = RangeWidget

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

    def widget_attrs(self, widget):
        return super().widget_attrs(widget)


class RangeField(Field):
    name = _('Range Field')

    form = RangeForm
    form_field = RangeElement
    form_field_widget = RangeElement.widget
    fieldset_general_fields = [
        'label',
        ('min_value', 'max_value'),
        'required',
    ]
    fieldset_advanced_fields = [
        'help_text',
        'required_message',
        'custom_classes',
    ]


plugin_pool.register_plugin(RangeField)

插件
表单字段
表单字段小部件
应该指向django表单字段和表单字段小部件

您可以在中看到一个示例


因此
RangeElement
应该继承django表单字段类,而不是
aldryn表单
字段
类。

插件
表单字段
表单字段小部件
应该指向django表单字段和表单字段小部件

您可以在中看到一个示例


所以
RangeElement
应该继承django表单字段类,而不是
aldryn表单
字段
类。

谢谢!我也忘了把我的插件包装成一个表单,所以它没有呈现…谢谢!我还忘了将插件包装成表单,因此它没有呈现。。。