python -m venv myenv
接下来,我们需要实现图片上传的功能。用户在前端页面选择并上传图片,后端接收到图片后保存到本地的uploads目录中,并将标题和文件名保存到数据库。
@app.route('/upload', methods=['POST']) def upload(): file = request.files.get("image") if file: img = Image.open(file) img.save("uploads/" + file.filename) image = Image(title=request.form.get("title"), filename=file.filename) db.session.add(image) db.session.commit() return "Upload successful!" else: return "Upload failed!"
然后,实现图片展示功能。用户可以通过访问 /images 路径查看所有保存的图片,并可以点击查看单个图片的详细信息。
@app.route('/images') def images(): images = Image.query.all() return render_template('images.html', images=images) @app.route('/image/<int:image_id>') def image_detail(image_id): image = Image.query.get(image_id) return render_template('image_detail.html', image=image)
接下来是实现图片删除的功能。用户可以通过点击页面上的“删除”按钮来删除指定的图片。
@app.route('/delete/<int:image_id>') def delete_image(image_id): image = Image.query.get(image_id) db.session.delete(image) db.session.commit() return redirect('/images')
为提供更好的用户体验,前端页面可以添加适当的HTML和CSS代码,利用Jinja2模板引擎渲染动态内容。
<!-- images.html --> {% for image in images %} <div> <a href="{{ url_for('image_detail', image_id=image.id) }}">View details</a> <a href="{{ url_for('delete_image', image_id=image.id) }}">Delete</a> </div> {% endfor %}
<!-- image_detail.html --> <h1>{{ image.title }}</h1>
通过以上代码示例,我们可以看到如何使用Python编写CMS系统的图片管理功能。虽然这只是一个简单的示例,但它展示了Flask框架、SQLAlchemy数据库工具和PIL图像处理库的基本使用方法。在实际开发中,CMS系统可能需要更多功能和复杂的逻辑,开发者可以在此基础上进行扩展和优化。