Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.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
我可以将Django输出的选择框中的HTML实体标记为安全的吗?_Django_Escaping_Html Entities - Fatal编程技术网

我可以将Django输出的选择框中的HTML实体标记为安全的吗?

我可以将Django输出的选择框中的HTML实体标记为安全的吗?,django,escaping,html-entities,Django,Escaping,Html Entities,我的Django表单上有一个下拉框,其中包含®HTML实体。有没有一种简单的方法让Django将其标记为安全的 这不起作用: {{ form.myoptions.label_tag }} {{ form.myoptions|safe }} 编辑: 我应该提到,下拉框是从一个外键字段生成的。你说得对-它不起作用。。。我认为最简单的方法是从python中将其标记为安全的 from django.utils.safestring import mark_safe MY_CHOICES = [

我的Django表单上有一个下拉框,其中包含
®HTML实体。有没有一种简单的方法让Django将其标记为安全的

这不起作用:

{{ form.myoptions.label_tag }}
{{ form.myoptions|safe }}
编辑:


我应该提到,下拉框是从一个
外键
字段生成的。

你说得对-它不起作用。。。我认为最简单的方法是从python中将其标记为安全的

from django.utils.safestring import mark_safe

MY_CHOICES = [
    ('foo', mark_safe('& foo')),
    ('bar', 'bar'),
]
根据源代码,您可以手动定义
modelcooicefield.choices
,也可以编写一个新字段并覆盖
label\u from\u instance

class MyModelForm(forms.ModelForm):
    class Meta:
        model = Foo
    def __init__(self, *args, **kwargs):
        super(MyModelForm, self).__init__(*args, **kwargs)
        self.fields['foo'].choices = ((foo.id, mark_safe(foo.bar)) for foo in Foo.objects.all())



class SafeModelChoiceField(ModelChoiceField):
    def label_from_instance(self, obj): 
        return mark_safe(obj)

我想我更喜欢自己构造选择,这样任何其他神奇的
ModelForm
field->formfield
转换都不会被覆盖

对于从ForeignKey字段生成的下拉框,有没有办法做到这一点?哦,等等,
modelcooicefield
使用queryset,而不是选项。让我深入研究它是如何将QS转换为选项的。是的,看起来您可以1:手动为字段构造选项,或者2:子类
modelcoocefield
并将
label\u从\u实例
覆盖到
标记安全