打开pycharm,点击file,点击New Project:
点击flask,再如下图所示进行操作:
最上面的Location里面可以修改pycharm文件储存位置,并创建文件,操作完毕后,最后点右下角的Creat,结果如下:
接下来再在template下创建一个叫index的html文件,步骤如下;
效果如下:
接下来是代码操作了:
先在app.py里输入以下代码:
import os
from flask import Flask, render_template, request
from flask_script import Manager
from flask_bootstrap import Bootstrap
from flask_wtf import FlaskForm
from flask_uploads import UploadSet, IMAGES, configure_uploads, patch_request_class
from flask_wtf.file import FileField, FileRequired, FileAllowed
from wtforms import SubmitField
# pip install pillow
from PIL import Image
app = Flask(__name__)
bootstrap = Bootstrap(app)
app.config['SECRET_KEY'] = 'ADFAD122DFDF'
app.config['MAX_CONTENT_LENGTH'] = 8 * 1024 * 1024
app.config['UPLOADED_PHOTOS_DEST'] = os.getcwd() # 存到跟这个文件一个目录下
photos = UploadSet('photos', IMAGES) # 创建上传对象
configure_uploads(app, photos) # 跟app 完成绑定
patch_request_class(app, size=None) #
manager = Manager(app)
class UploadForm(FlaskForm):
photo = FileField('头像上传', validators=[FileRequired('请选择头像'), FileAllowed(photos, message='只能上传图片')])
submit = SubmitField('立即上传')
# 生成随机字符串
def random_string(length=16):
import random
base_str = '0987654321qwertyuiopasdfghjklzxcvbnm'
return "".join(random.choice(base_str) for i in range(length))
@app.route('/', methods=['GET', 'POST'])
def hello_world():
#将form实例化一个对象
form = UploadForm()
img_url = ''
if form.validate():
suffix = os.path.splitext(form.photo.data.filename)[1] #获取文件名后缀
filename = random_string() + suffix #拼接成新文件名
photos.save(form.photo.data, name=filename) #保存文件
# 文件保存成功以后我才设定缩略图
path_name = os.path.join(app.config['UPLOADED_PHOTOS_DEST'], filename)
# 打开该图片
image = Image.open(path_name)
# 设定尺寸
image.thumbnail((128, 128))
new_filename = random_string() + '.min' + suffix #设置新文件名
# 3aa.min.jpg
new_path_name = os.path.join(app.config['UPLOADED_PHOTOS_DEST'], new_filename)
# 保存
image.save(new_path_name)
img_url = photos.url(new_filename) # 获取缩略图的地址
return render_template('index.html', form=form, img_url=img_url)
if __name__ == '__main__':
manager.run()
再在index.html里面输入以下代码:
{% extends 'bootstrap/base.html' %}
{% import 'bootstrap/wtf.html' as wtf %}
{% block content %}
{% if img_url %}
<img src="{{ img_url }}" alt="">
{% endif %}
<div class="container">
{{ wtf.quick_form(form) }}
</div>
{% endblock %}
哪个包没有就在Terminal里面安装哪个包
再点击pycharm左下角的Terminal,如图所示:
点击后输入以下内容:
python app.py runserver -d -r -p 8080
后面的8080是端口号,可以随便该成四个数字,运行结果如下,报错了:
解决方案如下:将鼠标移到app.py文件的第六行的flask_uploads上,按住ctrl键,点击鼠标左键,进入flask_uploads.py文件中,将其中两行代码修改成如下图所示:
再次运行即可