kindeditor在django3中的问题


一、问题

最近跟着B站上的老男孩视频写BBS项目,当用到kindeditor时碰到了一个问题。明明跟着老师写得,我的却总是出现这个情况:

试了多次确认,肯定不是我哪一步错了。打开f2:

看来是某个配置出问题。

Refused to display 'http://127.0.0.1:8000/' in a frame because it set 'X-Frame-Options' to 'deny'.

把上面这句话拿到百度,发现这样的文章:

所问题解释清楚了。

二、原因

原来是django3中把'X-Frame-Options'这个选项配置为'deny'。那就在配置选项中直接把这个选项改为:

X_FRAME_OPTIONS = 'SAMEORIGIN'

经过测试,可以解决。只不过这是从全局的角度解决问题。如果要解决单个网页的问题,可以参看上面的文章。我只把代码复制过来。备忘。

# 从代码来看,要想解决那个网页,就直接在那个视图函数上加上装饰器就OK了。
from django.http import HttpResponse
from django.views.decorators.clickjacking import xframe_options_exempt
from django.views.decorators.clickjacking import xframe_options_deny
from django.views.decorators.clickjacking import xframe_options_sameorigin

@xframe_options_exempt
def view_one(request):
return HttpResponse("This page is safe to load in a frame on any site.")

@xframe_options_deny
def view_two(request):
return HttpResponse("I won't display in any frame!")

@xframe_options_sameorigin
def view_three(request):
return HttpResponse("Display in a frame if it's from the same origin as me.")

经过测试,可以解决问题。