Flask-CKEditor 上传图片问题


#1

点击上传服务器会爆400 之后点击确定会报这样的错。
想关代码:
配置:
CKEDITOR_HEIGHT = 600
CKEDITOR_WIDTH = 600
CKEDITOR_FILE_UPLOADER = ‘/upload/’
CKEDITOR_ENABLE_CSRF = True
表单:
class Blogcomment(FlaskForm):
title = StringField(‘标题’)
category = StringField(‘类别’)
text = CKEditorField(‘Body’)
submit = SubmitField(‘提交’)
接收图片的类:
class PictureHandler(MethodView):
def post(self):
f = request.files.get(‘upload’) # 获取上传图片文件对象
extension = f.filename.split(’.’)[1].lower()
if extension not in [‘jpg’, ‘gif’, ‘png’, ‘jpeg’]: # 验证文件类型示例
return upload_fail(message=‘Image only!’) # 返回upload_fail调用
img_url = put_file(f)
return img_url

process_file.add_url_rule(’/upload/’, view_func=PictureHandler.as_view(‘picturehandler’))

页面:
{% block content %}

新增文章



{{ form.csrf_token }}
{{ form.title.label }}{{ form.title() }}

{{ form.category.label }}{{ form.category() }}

{{ form.text() }}
{{ form.submit() }}
{% block scripts %}
    {{ super() }}
    {{ ckeditor.load() }}
    {{ ckeditor.config(name='text') }}
{% endblock %}

{% endblock %}


#2

点击确定


#3

纯代码文本或命令行输出建议使用代码块格式化。

插入代码块的方式:除了将所有代码缩进四格,更方便的插入代码块方式是使用三个连续的反引号作为开始和结束标记,比如:

```
def hello():
    return ‘Hello World’
```

会被渲染为:

 def hello():
     return 'Hello World'

具体请看置顶帖子 技术提问帖发帖规则(创建提问帖前必读)


#4

你在处理上传图片的视图函数结尾没有返回 upload_success 调用,详情见文档

报错提示 CSRF 令牌丢失,如果你想为图片上传请求添加 CSRF 保护,需要参考文档进行相关设置。

另,帖子标题不合格,正文格式混乱,请参考论坛置顶帖修改。