Python Flask 全流程全栈项目实战完整版
Python Flask 全流程全栈项目实战
download:百度网盘
Python Flask全流程全栈项目实战:构建一个在线书店
一、项目概述
我们将运用Python的Flask框架,构建一个功用齐全的在线书店。这个项目将掩盖全栈开发的各个方面,包括后端开发、前端开发、数据库设计和部署等。经过这个项目,你将深化理解如何运用Flask停止全栈开发,并控制相关技艺。
二、环境准备
首先,你需求装置Python和相关的库。倡议运用Python 3.7或更高版本,并装置以下库:
- Flask:轻量级的Web框架
- Flask-SQLAlchemy:用于数据库操作
- Flask-WTF:用于表单处置
- Flask-Login:用于用户认证和会话管理
你能够运用pip停止装置:
bash复制代码
| pip install flask flask_sqlalchemy flask_wtf flask_login |
三、项目构造
在开端编码之前,我们需求规划好项目的构造。以下是一个倡议的项目构造:
lua复制代码
| /online_bookstore | |
| |-- /static | |
| | |-- /css | |
| | |-- /js | |
| | |-- /images | |
| |-- /templates | |
| | |-- index.html | |
| | |-- login.html | |
| | |-- register.html | |
| | |-- books.html | |
| |-- /app.py | |
| |-- /models.py | |
| |-- /forms.py | |
| |-- /config.py |
四、数据库设计
我们运用Flask-SQLAlchemy来操作数据库。首先,在models.py中定义数据模型:
python复制代码
| from flask_sqlalchemy import SQLAlchemy | |
| from flask_login import UserMixin | |
| from werkzeug.security import generate_password_hash, check_password_hash | |
| db = SQLAlchemy() | |
| class User(UserMixin, db.Model): | |
| id = db.Column(db.Integer, primary_key=True) | |
| username = db.Column(db.String(64), unique=True, nullable=False) | |
| password_hash = db.Column(db.String(128), nullable=False) | |
| books = db.relationship('Book', backref='user', lazy='dynamic') | |
| def set_password(self, password): | |
| self.password_hash = generate_password_hash(password) | |
| def check_password(self, password): | |
| return check_password_hash(self.password_hash, password) | |
| class Book(db.Model): | |
| id = db.Column(db.Integer, primary_key=True) | |
| title = db.Column(db.String(100), nullable=False) | |
| author = db.Column(db.String(100), nullable=False) | |
| year = db.Column(db.Integer, nullable=False) | |
| genre = db.Column(db.String(50), nullable=False) | |
| price = db.Column(db.Float, nullable=False) | |
| user_id = db.Column(db.Integer, db.ForeignKey('user.id')) |
五、后端开发
在app.py中,我们初始化Flask应用,配置数据库,并定义视图函数:
python复制代码
| from flask import Flask, render_template, redirect, url_for, flash, request | |
| from flask_sqlalchemy import SQLAlchemy | |
| from flask_login import LoginManager, login_user, logout_user, login_required, current_user | |
| from forms import RegistrationForm, LoginForm, BookForm | |
| from models import User, Book, db | |
| from werkzeug.security import generate_password_hash, check_password_hash | |
| from flask_login import login_required, current_user | |
| from flask_mail import Mail, Message | |
| import os | |
| from dotenv import load_dotenv # take environment variables from .env. | |
| load_dotenv() # taking environment variables from .env. file if present in the project root directory else ign |