我在django管理员中安装了tinymce,以便能够在测验应用程序的问题中插入代码/视频等。但是,当我去显示问题时,它会出现在代码中,就像在我的tinymce工具中写“ c”一样,在显示的问题中,它将如下图所示:
quiz / admins.py
from django.contrib import admin
from .models import Questions
from tinymce.widgets import TinyMCE
from django.db import models
# Register your models here.
class QuestionsAdmin(admin.ModelAdmin):
fields = [
'question',
'optiona',
'optionb',
]
formfield_overrides = {
models.TextField: {'widget': TinyMCE()},
}
admin.site.register(Questions, QuestionsAdmin)
quiz / models.py
from django.db import models
from django.conf import settings
# Create your models here.
class Questions(models.Model):
CAT_CHOICES = (
('datascience', 'DataScience'),
('productowner', 'ProductOwner'),
('businessanalyst', 'BusinessAnalyst'),
#('sports','Sports'),
#('movies','Movies'),
#('maths','Maths'),
#('generalknowledge','GeneralKnowledge'),
)
question = models.TextField(max_length = 850)
optiona = models.TextField(max_length = 800)
optionb = models.TextField(max_length = 800)
optionc = models.TextField(max_length = 800)
optiond = models.TextField(max_length = 800)
answer = models.TextField(max_length = 850)
catagory = models.TextField(max_length=20, choices = CAT_CHOICES)
class Meta:
ordering = ('-catagory',)
def __str__(self):
return self.question
piattaforma / settings.py
TINYMCE_DEFAULT_CONFIG = {
'height': 360,
'width': 1120,
'cleanup_on_startup': True,
'custom_undo_redo_levels': 20,
'selector': 'textarea',
'theme': 'modern',
'plugins': '''
textcolor save link image media preview codesample contextmenu
table code lists fullscreen insertdatetime nonbreaking
contextmenu directionality searchreplace wordcount visualblocks
visualchars code fullscreen autolink lists charmap print hr
anchor pagebreak
''',
'toolbar1': '''
fullscreen preview bold italic underline | fontselect,
fontsizeselect | forecolor backcolor | alignleft alignright |
aligncenter alignjustify | indent outdent | bullist numlist table |
| link image media | codesample |
''',
'toolbar2': '''
visualblocks visualchars |
charmap hr pagebreak nonbreaking anchor | code |
''',
'contextmenu': 'formats | link image',
'menubar': True,
'statusbar': True,
}
piattaforma / urls.py
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('core.urls')),
path('accounts/', include('django.contrib.auth.urls')),
path('accounts/', include('accounts.urls')),
path('quiz/', include('quiz.urls')),
path('tinymce/', include('tinymce.urls')),
]
大多数Web框架默认都会转义呈现给页面的HTML,以停止将意外代码意外注入页面。您可以使用Django的安全过滤器阻止这种情况的发生。在模板中,您将执行以下操作:
{{ instance.the_html_field|safe }}
https://docs.djangoproject.com/en/3.0/ref/templates/builtins/#safe