这两天在学习flask文件上传的内容。网上找到一个教程。自己敲了一遍打算实现一下。但是却发现在pycharm中运行报错,显示有一个扩展包没有。但是我明明下了那个扩展包,之后在终端中运行程序却发现可以成功。
期间我尝试直接复制粘贴教程的代码却还是同样的问题。扩展包的下载都是在pycharm中完成的。
相关代码:
upload.py
import os
from flask import Flask, render_template
from flask_uploads import UploadSet, configure_uploads, IMAGES, patch_request_class
from flask_wtf import FlaskForm
from flask_wtf.file import FileField, FileRequired, FileAllowed
from wtforms import SubmitField
app = Flask(__name__)
app.config['SECRET_KEY'] = 'I have a dream'
app.config['UPLOADED_PHOTOS_DEST'] = os.getcwd()
photos = UploadSet('photos', IMAGES)
configure_uploads(app, photos)
patch_request_class(app) # set maximum file size, default is 16MB
class UploadForm(FlaskForm):
photo = FileField(validators=[FileAllowed(photos, u'Image only!'), FileRequired(u'File was empty!')])
submit = SubmitField(u'Upload')
@app.route('/', methods=['GET', 'POST'])
def upload_file():
form = UploadForm()
if form.validate_on_submit():
filename = photos.save(form.photo.data)
file_url = photos.url(filename)
else:
file_url = None
return render_template('index.html', form=form, file_url=file_url)
if __name__ == '__main__':
app.run()
index.html
<!DOCTYPE html>
<title>Upload File</title>
<h1>Photo Upload</h1>
<form method="POST" enctype="multipart/form-data">
{{ form.hidden_tag() }}
{{ form.photo }}
{% for error in form.photo.errors %}
<span style="color: red;">{{ error }}</span>
{% endfor %}
{{ form.submit }}
</form>
{% if file_url %}
<br>
<img src="{{ file_url }}">
{% endif %}
Raw
pychar运行结果:
终端运行结果:
代码运行成功网页:
是不是pycharm有什么相关设置要改??? 求指导!!!
是 pycharm 找不到 flask_uploads.
0.确保 flask_uploads 存在,在 setting 中设置项目的解释器和运行环境。
1.在pycharm目录树合适的文件夹上右键,Mark Directory as - Source Root
2.试着改写一下 import 语句。