Home > Article > Backend Development > How to use Python to write the image management function of CMS system
How to use Python to write the image management function of the CMS system
Overview:
With the rapid development of the Internet, content management systems (CMS) have become An indispensable part of web development. Among them, the image management function is one of the very important and common modules in the CMS system. Through the image management function, you can easily upload, delete, edit and display image resources on the website. This article will introduce how to use Python to write the image management function of a simple CMS system, and give corresponding code examples.
Main technology stack:
Environment preparation:
python -m venv myenv
to create a virtual environmentsource myenv/bin/activate
(Linux/MacOS) or myenvScripts ctivate
(Windows) to activate the virtual environmentpip install flask sqlalchemy pillow
in the virtual environment to install the required dependency packagesCode example:
First, we need to create a Flask application and configure the database connection.
from flask import Flask, render_template, request from flask_sqlalchemy import SQLAlchemy from PIL import Image app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///images.db' db = SQLAlchemy(app) class Image(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(80)) filename = db.Column(db.String(80))
Next, we need to implement the image upload function. The user selects and uploads pictures on the front-end page. The back-end receives the pictures and saves them to the local uploads
directory, and then saves the title and file name to the database.
@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!"
Then, we need to implement the function of image display. Users can view all images saved in the system by accessing the /images
path, and view their details by clicking on a single image.
@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)
Finally, we implemented the function of image deletion. Users can delete specified images by clicking the "Delete" button on the page.
@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')
In order to provide a better user experience, add appropriate HTML and CSS code to the front-end page and use the Jinja2 template engine to render dynamic content.
<!-- images.html --> {% for image in images %} <div> <img src="{{ url_for('static', filename='uploads/' + image.filename) }}" alt="{{ image.title }}"> <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> <img src="{{ url_for('static', filename='uploads/' + image.filename) }}" alt="{{ image.title }}">
Summary:
Through the above code examples, we can learn how to use Python to write the image management function of the CMS system. Of course, this article only provides a simple example, and actual CMS systems may require more features and complex logic. I hope readers can get some inspiration from it and bring more possibilities to their own projects. At the same time, we should also study and practice in depth to further improve our abilities and technical levels in the field of web development.
The above is the detailed content of How to use Python to write the image management function of CMS system. For more information, please follow other related articles on the PHP Chinese website!