Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/32.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 如何覆盖Django小部件函数(Froala编辑器)?_Python_Django_Widget_Froala_Django Widget - Fatal编程技术网

Python 如何覆盖Django小部件函数(Froala编辑器)?

Python 如何覆盖Django小部件函数(Froala编辑器)?,python,django,widget,froala,django-widget,Python,Django,Widget,Froala,Django Widget,我想知道如何覆盖Django中的函数render和trigger\u froala。我可以创建自己的小部件来覆盖这两个功能吗 from django.forms import widgets, Media from django.utils.safestring import mark_safe from django.conf import settings import json from . import PLUGINS, PLUGINS_WITH_CSS, THIRD_PARTY, TH

我想知道如何覆盖Django中的函数
render
trigger\u froala
。我可以创建自己的小部件来覆盖这两个功能吗

from django.forms import widgets, Media
from django.utils.safestring import mark_safe
from django.conf import settings
import json
from . import PLUGINS, PLUGINS_WITH_CSS, THIRD_PARTY, THIRD_PARTY_WITH_CSS

try:
    from django.urls import NoReverseMatch, reverse
except ImportError:
    from django.core.urlresolvers import reverse, NoReverseMatch


class FroalaEditor(widgets.Textarea):
    def __init__(self, *args, **kwargs):
        self.options = kwargs.pop('options', {})
        self.plugins = kwargs.pop('plugins', getattr(settings, 'FROALA_EDITOR_PLUGINS', PLUGINS))
        self.third_party = kwargs.pop('third_party', getattr(settings, 'FROALA_EDITOR_THIRD_PARTY', THIRD_PARTY))
        self.theme = kwargs.pop('theme', getattr(settings, 'FROALA_EDITOR_THEME', None))
        self.include_jquery = kwargs.pop('include_jquery', getattr(settings, 'FROALA_INCLUDE_JQUERY', True))
        self.image_upload = kwargs.pop('image_upload', True)
        self.file_upload = kwargs.pop('file_upload', True)
        self.language = (getattr(settings, 'FROALA_EDITOR_OPTIONS', {})).get('language', '')
        super(FroalaEditor, self).__init__(*args, **kwargs)

    def render(self, name, value, attrs=None, renderer=None):
        html = super(FroalaEditor, self).render(name, value, attrs)
        el_id = self.build_attrs(attrs).get('id')
        html += self.trigger_froala(el_id, self.get_options())
        return mark_safe(html)

    def trigger_froala(self, el_id, options):

        str = """
        <script>
            $(function(){
                $('#%s').froalaEditor(%s)
            });
        </script>""" % (el_id, options)
        return str
来自django.forms的导入窗口小部件、媒体 从django.utils.safestring导入标记_safe 从django.conf导入设置 导入json 从…起导入插件、带有CSS的插件、第三方、带有CSS的第三方 尝试: 从django.url导入NoReverseMatch,反向 除恐怖外: 从django.core.urlResolver导入反向,NoReverseMatch 类编辑器(widgets.Textarea): 定义初始化(self,*args,**kwargs): self.options=kwargs.pop('options',{}) self.plugins=kwargs.pop('plugins',getattr(设置,'FROALA\u EDITOR\u plugins',plugins)) self.third\u party=kwargs.pop('third\u party',getattr(设置,'FROALA\u EDITOR\u third\u party',third\u party)) self.theme=kwargs.pop('theme',getattr(设置,'FROALA\u EDITOR\u theme',无)) self.include\u jquery=kwargs.pop('include\u jquery',getattr(设置,'FROALA\u include\u jquery',True)) self.image\u upload=kwargs.pop('image\u upload',True) self.file\u upload=kwargs.pop('file\u upload',True) self.language=(getattr(设置,'FROALA_EDITOR_OPTIONS',{})).get('language','') super(FroalaEditor,self)。\uuuuu init\uuuuuu(*args,**kwargs) def render(self、name、value、attrs=None、renderer=None): html=super(FroalaEditor,self).render(名称、值、属性) el\u id=self.build\u attrs(attrs.get('id')) html+=self.trigger\u froala(el\u id,self.get\u options()) 返回安全标记(html) def触发器(自身、el_id、选项): str=”“” $(函数(){ $('#%s')。froalaEditor(%s) }); “”“%(el_id,选项) 返回str
我想出了办法:

from django import forms
from django.utils.safestring import mark_safe
from froala_editor.widgets import FroalaEditor

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

    def render(self, name, value, attrs=None, renderer=None):
        html = super(FroalaEditor, self).render(name, value, attrs)
        return mark_safe(html)

你给我们看的代码是什么?您想在哪里覆盖?Django只是python,你总是可以子类化类和重写方法…这是FroalaEditor类,它包含了我想要重写的两个函数。那么问题出在哪里呢?我想您知道如何在python中对方法进行子类化和重写。。。如果没有,请学习python。谢谢你的建议!你的问题不清楚。你没说问题出在哪里。