Django tinymce 显示问题
Django tinymce display issue
我在我的 django 管理员中安装了 tinymce,以便能够在我的测验应用程序的问题中插入 code/videos 等。但是,当我去显示问题时,它出现在代码中,就像在我的 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)
category = models.TextField(max_length=20, choices = CAT_CHOICES)
class Meta:
ordering = ('-category',)
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
我在我的 django 管理员中安装了 tinymce,以便能够在我的测验应用程序的问题中插入 code/videos 等。但是,当我去显示问题时,它出现在代码中,就像在我的 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)
category = models.TextField(max_length=20, choices = CAT_CHOICES)
class Meta:
ordering = ('-category',)
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