Heim >Backend-Entwicklung >PHP-Tutorial >So verwenden Sie Python, um die Datei-Download-Verwaltungsfunktion des CMS-Systems zu entwickeln
So verwenden Sie Python, um die Datei-Download-Verwaltungsfunktion eines CMS-Systems zu entwickeln
Übersicht:
Angesichts der rasanten Entwicklung des Internets spielen Content-Management-Systeme (CMS) eine wichtige Rolle bei der Website-Entwicklung. Das CMS-System stellt nicht nur die Inhaltsverwaltungs- und Veröffentlichungsfunktionen der Website bereit, sondern muss auch über die Funktion der Datei-Download-Verwaltung verfügen. In diesem Artikel wird erläutert, wie Sie mit Python die Datei-Download-Verwaltungsfunktion des CMS-Systems entwickeln, um Entwicklern ein besseres Verständnis und eine bessere Anwendung zu ermöglichen.
CREATE TABLE downloads ( id INT(11) PRIMARY KEY AUTO_INCREMENT, title VARCHAR(100) NOT NULL, filename VARCHAR(100) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
Diese Tabelle enthält den Titel (title), den Dateinamen (filename) und die Erstellungszeit (created_at) der Datei.
from flask import Flask, request, render_template from flask_sqlalchemy import SQLAlchemy from werkzeug.utils import secure_filename app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:password@localhost/db_name' db = SQLAlchemy(app) class Download(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(100), nullable=False) filename = db.Column(db.String(100), nullable=False) created_at = db.Column(db.TIMESTAMP, default=db.func.current_timestamp()) @app.route('/upload', methods=['GET', 'POST']) def upload_file(): if request.method == 'POST': title = request.form['title'] file = request.files['file'] filename = secure_filename(file.filename) file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename)) download = Download(title=title, filename=filename) db.session.add(download) db.session.commit() return '文件上传成功!' return render_template('upload.html')
Im obigen Code ist „UPLOAD_FOLDER“ der Ordnerpfad zum Speichern der hochgeladenen Datei. Bitte legen Sie ihn entsprechend der spezifischen Situation fest.
from flask import send_from_directory @app.route('/download/<int:download_id>') def download(download_id): download = Download.query.get_or_404(download_id) return send_from_directory(app.config['UPLOAD_FOLDER'], download.filename, as_attachment=True)
Im obigen Code ist „download_id“ die ID der heruntergeladenen Datei, die von der URL erhalten wurde. Basierend auf der ID werden dateibezogene Informationen aus der Datenbank abgerufen und dann wird der Dateidownload über die Funktion send_from_directory bereitgestellt.
@app.route('/') def index(): downloads = Download.query.all() return render_template('index.html', downloads=downloads)
Im obigen Code werden die Informationen aller heruntergeladenen Dateien aus der Datenbank abgerufen und dann zur Anzeige auf der Seite an die Vorlage übergeben.
Erstellen Sie eine Vorlage:
Erstellen Sie den Ordner „templates“ im Projektverzeichnis und fügen Sie die folgenden zwei Vorlagendateien hinzu:<!DOCTYPE html> <html> <head> <title>文件上传</title> </head> <body> <h2>文件上传</h2> <form action="/upload" method="POST" enctype="multipart/form-data"> <div> <label for="title">标题:</label> <input type="text" id="title" name="title" required> </div> <div> <label for="file">选择文件:</label> <input type="file" id="file" name="file" required> </div> <div> <input type="submit" value="上传"> </div> </form> </body> </html>
<!DOCTYPE html> <html> <head> <title>下载文件列表</title> </head> <body> <h2>下载文件列表</h2> <ul> {% for download in downloads %} <li><a href="/download/{{ download.id }}">{{ download.title }}</a></li> {% endfor %} </ul> </body> </html>
Das obige ist der detaillierte Inhalt vonSo verwenden Sie Python, um die Datei-Download-Verwaltungsfunktion des CMS-Systems zu entwickeln. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!