Python Flask 全流程全栈项目实战(拥有一个高质量的个人作品)

390 阅读1分钟

Python Flask 全流程全栈项目实战

//xia仔k:百度网盘

一、项目概述

我们将运用PythonFlask框架,构建一个功用齐全的在线书店。这个项目将掩盖全栈开发的各个方面,包括后端开发、前端开发、数据库设计和部署等。经过这个项目,你将深化理解如何运用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 dir