基于Flask的电商平台

项目介绍
电商门户网站

技术栈

本电商平台构建于一系列强大的技术和框架之上,以确保用户获得卓越的体验和无缝的购物流程。

  1. Bootstrap 3 - 提供响应式设计,使得网站在各种设备上均能展现出最佳效果。
  2. Layui 2 - 以其优雅的UI组件,增强了界面的美观性和用户的交互体验。
  3. Flask - 作为后端框架,它提供了简洁而强大的API,保证了网站的高效运行和易于扩展。
  4. Vue 3 - 前端框架的现代化选择,它通过双向数据绑定和组件化架构提升了开发效率和用户体验。
  5. jQuery - 经典的JavaScript库,简化了DOM操作和事件处理,为网站的交互性提供了坚实基础。

首页导航栏 --(待完善)

<div id="app">
    <!-- 导航栏 -->
    <nav class="navbar navbar-default">
        <div class="container-fluid">
            <div class="navbar-header">
                <a class="navbar-brand" href="#">JD</a>
            </div>
            <div class="navbar-links">
                <ul class="nav navbar-nav">
                    <li class="active"><a href="#">首页</a></li>
                    <li><a href="#">切换企业版</a></li>
                </ul>
                <ul class="nav navbar-nav navbar-right">
                    <li class="dropdown cart">
                        <a href="#" class="dropdown-toggle" data-toggle="dropdown">
                            <i class="layui-icon layui-icon-cart-simple"></i> 购物车
                            <span class="caret">
                            <span class="badge">{{ session["cart_count"] }}</span>
                            </span>
                        </a>
                    </li>
                    <li class="dropdown user-menu">
                        {% if session["username"] %}
                            <a href="#" class="dropdown-toggle" data-toggle="dropdown">
                                {{ session["username"] }} <i class="layui-icon layui-icon-down"></i>
                            </a>
                            <ul class="dropdown-menu">
                                <li><a href="/user/logout"><i class="layui-icon layui-icon-logout"></i> 退出</a></li>
                                <li><a href="/user/help"><i class="layui-icon layui-icon-help"></i> 帮助</a></li>
                            </ul>
                        {% else %}
                           <li><a href="/user/login"><i class="layui-icon layui-icon-username"></i> 登录</a></li>
                            <li><a href="/user/register"><i class="layui-icon layui-icon-username"></i> 注册</a></li>
                        {% endif %}
                    </li>

                 <li class="dropdown myjd-menu">
                    <a href="#" class="dropdown-toggle" data-toggle="dropdown">
                        <i class="layui-icon layui-icon-username"></i> 我的京东<span class="caret"></span>
                        <ul class="dropdown-menu">
                            <li><a href="/user/{{ session["username"] }}/userinfo"><i
                                    class="layui-icon layui-icon-set"></i>
                                个人中心</a></li>
                            <li><a href="/user/{{ session["username"] }}/orders"><i
                                    class="layui-icon layui-icon-cart-simple"></i>
                                我的订单</a></li>
                            <li><a href="/user/{{ session["username"] }}/evaluation"><i
                                    class="layui-icon layui-icon-star"></i>
                                我的评价</a></li>
                            <li><a href="/user/{{ session["username"] }}/collection"><i
                                    class="layui-icon layui-icon-star"></i>
                                我的收藏</a></li>
                            <li><a href="/user/{{ session["username"] }}/footprint"><i
                                    class="layui-icon layui-icon-star"></i>
                                我的足迹</a></li>
                            <li><a href="/user/{{ session["username"] }}/coupon"><i
                                    class="layui-icon layui-icon-star"></i>
                                我的优惠券</a></li>
                            <li><a href="/user/{{ session["username"] }}/address"><i
                                    class="layui-icon layui-icon-star"></i>
                                收货地址</a></li>
                        </ul>
                    </a>
                 </li>
                </ul>
            </div>
        </div>
    </nav>
</div>

index.css

.footer {
    position: absolute;
    bottom: 0;
    width: 100%;
    height: 60px;
    background-color: #f5f5f5;
    text-align: center;
    padding: 20px 0;
}

注册 (可以根据自己需求改成flask-wtf表单)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>注册</title>
    <link rel="stylesheet" href="https://www.layuicdn.com/layui/css/layui.css">
</head>
<body>

<div class="layui-container">
    <form class="layui-form layui-card" action="{{ url_for('register') }}" method="post">
        <h2 class="layui-card-header">注册</h2>
        <div class="layui-form-item">
            <label class="layui-form-label">用户名</label>
            <div class="layui-input-block">
                <input type="text" name="username" required lay-verify="required" placeholder="请输入用户名" autocomplete="off" class="layui-input">
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label">密码</label>
            <div class="layui-input-block">
                <input type="password" name="password" required lay-verify="required" placeholder="请输入密码" autocomplete="off" class="layui-input">
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label">确认密码</label>
            <div class="layui-input-block">
                <input type="password" name="confirm_password" required lay-verify="required" placeholder="请再次输入密码" autocomplete="off" class="layui-input">
            </div>
        </div>
        <div class="layui-form-item">
            <div class="layui-input-block">
                <button class="layui-btn" lay-submit lay-filter="register">立即注册</button>
            </div>
        </div>
    </form>
</div>

<script src="https://www.layuicdn.com/layui/layui.js"></script>
<script>
    layui.use('form', function(){
        var form = layui.form;
        // 监听提交
        form.on('submit(register)', function(data){
            // 提交表单,这里Layui会自动处理
        });
    });
</script>
</body>
</html>

登录(可以根据自己需求改成flask-wtf表单)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登录</title>
    <link rel="stylesheet" href="https://www.layuicdn.com/layui/css/layui.css">
</head>
<body>

<div class="layui-container">
    <form class="layui-form layui-card" action="{{ url_for('login') }}" method="post">
        <h2 class="layui-card-header">登录</h2>
        <div class="layui-form-item">
            <label class="layui-form-label">用户名</label>
            <div class="layui-input-block">
                <input type="text" name="username" required lay-verify="required" placeholder="请输入用户名" autocomplete="off" class="layui-input">
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label">密码</label>
            <div class="layui-input-block">
                <input type="password" name="password" required lay-verify="required" placeholder="请输入密码" autocomplete="off" class="layui-input">
            </div>
        </div>
        <div class="layui-form-item">
            <div class="layui-input-block">
                <button class="layui-btn" lay-submit lay-filter="login">立即登录</button>
            </div>
        </div>
    </form>
</div>

<script src="https://www.layuicdn.com/layui/layui.js"></script>
<script>
    layui.use('form', function(){
        var form = layui.form;
        // 监听提交
        form.on('submit(login)', function(data){
            // 提交表单,这里Layui会自动处理
        });
    });
</script>
</body>
</html>

app

import os
from flask import Flask, render_template, request, redirect, url_for, flash
from flask_sqlalchemy import SQLAlchemy
from werkzeug.security import generate_password_hash, check_password_hash
import pymysql

app = Flask(__name__)
app.secret_key = os.urandom(24)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:password@localhost/web'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False  #防止警告信息
db = SQLAlchemy(app)

# 用户模型
class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(20), unique=True, nullable=False)
    password = db.Column(db.String(60), nullable=False)

@app.route('/')
def home():
    return render_template('index.html')

@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        username = request.form.get('username')
        password = request.form.get('password')
        user = User.query.filter_by(username=username).first()
        if user and check_password_hash(user.password, password):
            return redirect(url_for('home'))  # 登录成功重定向首页
        else:
            flash('登录失败,请检查用户名或密码!')  # 显示错误消息
    return render_template('login.html')
@app.route('/register', methods=['GET', 'POST'])
def register():
    if request.method == 'POST':
        username = request.form.get('username')
        password = request.form.get('password')
        confirm_password = request.form.get('confirm_password')
        
        # 检查两次输入的密码是否一致
        if password != confirm_password:
            flash('两次输入的密码不一致!')
            return redirect(url_for('register'))
       
        # 检查用户名是否已存在
        user = User.query.filter_by(username=username).first()
        if user:
            flash('该用户名已被注册!')
            return redirect(url_for('register'))
        
        # 创建新用户 hash加密
        hashed_password = generate_password_hash(password, method='sha256')
        new_user = User(username=username, password=hashed_password)
        db.session.add(new_user)
        db.session.commit()
        
        flash('注册成功,请登录!')
        return redirect(url_for('login'))
    
    return render_template('register.html')

if __name__ == '__main__':
    app.run(debug=True,host="0.0.0.0")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值