{{ post.title }}
{{ post.content[:100] }}...
Read moreIn diesem Tutorial erstellen wir eine einfache Blog-App mit FastAPI für das Backend, HTML und CSS für das Frontend und einem JSON-Datei zum Ausführen grundlegender CRUD-Vorgänge (Erstellen, Lesen, Aktualisieren, Löschen).
FastAPI ist ein modernes Web-Framework zum Erstellen von APIs mit Python, das für seine Einfachheit, Geschwindigkeit und integrierte Unterstützung für asynchrone Vorgänge bekannt ist.
Die folgende Implementierung würde so aussehen:
Bevor Sie beginnen, stellen Sie sicher, dass Folgendes installiert ist:
Um FastAPI und Uvicorn zu installieren, können Sie pip verwenden:
pip install fastapi uvicorn python-multipart
So wird das Projekt aufgebaut sein:
/blog_app ├── static │ └── style.css ├── templates │ ├── index.html │ ├── post.html │ ├── create_post.html ├── blog.json ├── main.py
Erstellen Sie eine main.py-Datei, die die FastAPI-Anwendung enthält.
from fastapi import FastAPI, Request, Form from fastapi.responses import HTMLResponse, RedirectResponse from fastapi.staticfiles import StaticFiles from fastapi.templating import Jinja2Templates import json import os app = FastAPI() app.mount("/static", StaticFiles(directory="static"), name="static") templates = Jinja2Templates(directory="templates") # Load or initialize blog data BLOG_FILE = "blog.json" if not os.path.exists(BLOG_FILE): with open(BLOG_FILE, "w") as f: json.dump([], f) def read_blog_data(): with open(BLOG_FILE, "r") as f: return json.load(f) def write_blog_data(data): with open(BLOG_FILE, "w") as f: json.dump(data, f) @app.get("/", response_class=HTMLResponse) async def home(request: Request): blogs = read_blog_data() return templates.TemplateResponse("index.html", {"request": request, "blogs": blogs}) @app.get("/post/{post_id}", response_class=HTMLResponse) async def read_post(request: Request, post_id: int): blogs = read_blog_data() post = blogs[post_id] if 0Back to HomeSchritt 2: HTML und CSS einrichten
Erstellen Sie im Vorlagenordner die folgenden HTML-Dateien:
index.html
In dieser Datei werden alle Blogbeiträge aufgelistet.Blog App Blog Posts
Create New Post{% for post in blogs %} {% endfor %}post.html
In dieser Datei wird der vollständige Inhalt eines Blogbeitrags angezeigt.{{ post.title }} {{ post.title }}
{{ post.content }}
Back to Homecreate_post.html
Diese Datei enthält das Formular zum Erstellen eines neuen Beitrags.Create a New Post Create a New Post
Erstellen Sie im statischen Ordner eine style.css-Datei, um einige grundlegende Stile hinzuzufügen.
body { font-family: Arial, sans-serif; padding: 20px; background-color: #f0f0f0; } h1 { color: #333; } a { text-decoration: none; color: #0066cc; } .post { background-color: #fff; padding: 10px; margin-bottom: 15px; border-radius: 5px; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); } button { background-color: #ff4d4d; border: none; padding: 5px 10px; color: white; border-radius: 3px; cursor: pointer; } button:hover { background-color: #ff1a1a; } input, textarea { width: 100%; padding: 8px; margin-bottom: 10px; }
Da nun alles eingerichtet ist, führen Sie die FastAPI-Anwendung mit Uvicorn aus.
uvicorn main:app --reload
Besuchen Sie http://127.0.0.1:8000 in Ihrem Browser und Sie sollten die Blog-Homepage sehen.
Als Aufgabe können Sie eine Datenbank ?️ statt nur JSON verwenden, um eine Full-Stack-Webanwendung zu erstellen.
Mit einer Datenbank können Sie weitere Funktionen hinzufügen, die Leistung verbessern und die gesamte Benutzeroberfläche/UX verbessern. für ein umfassenderes Benutzererlebnis.
Das ist alles für diesen Blog! Seien Sie gespannt auf weitere Updates und erstellen Sie weiterhin tolle Apps! ?✨
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3