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系統可能需要更多功能和復雜的邏輯,開發者可以在此基礎上進行擴展和優化。