Home >Backend Development >PHP Tutorial >How to use Python to write the image management function of CMS system

How to use Python to write the image management function of CMS system

PHPz
PHPzOriginal
2023-08-26 16:03:291444browse

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:

  • Python: an easy-to-learn and powerful programming language, suitable for rapid development of Web applications
  • Flask: a lightweight Web application framework, suitable for developing small CMS systems
  • SQLAlchemy: a Python SQL toolkit and object-relational mapper
  • Jinja2: a powerful and flexible template engine for generating dynamic web pages

Environment preparation:

  1. Install Python: Download and install the latest version of the Python interpreter from the Python official website
  2. Create a virtual environment: In the command line Run python -m venv myenv to create a virtual environment
  3. Activate the virtual environment: run source myenv/bin/activate (Linux/MacOS) or myenvScripts ctivate (Windows) to activate the virtual environment
  4. Install dependencies: Run pip install flask sqlalchemy pillow in the virtual environment to install the required dependency packages

Code 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!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn