【Django】网上蛋糕项目商城-首页

news/2024/7/7 18:38:14 标签: django, python, 后端

概念

本文在上一文章搭建完数据库,以及创建好项目之后,以及前端静态文件后,对项目的首页功能开发。

后端代码编写

在views.py文件中创建方法,连接数据库,并获取首页需要的数据

python">def getGoodsList(type):
    # 获取所有横幅滚动商品id
    res = Recommend.objects.filter(type=type)
    goodsIds = []
    for r in res:
        goodsIds.append(r.goods_id)
    # 根据推荐栏的商品信息
    goods = Goods.objects.filter(id__in=tuple(goodsIds))
    if type !=1:
        # 将实体类对象转换成字典进行遍历
        for g in goods.values():
            t = Type.objects.get(id=g["type_id"]).name
            g["typename"] = t
    return goods
python"># 处理首页的请求
def index(request):
    # 获取所有商品分类信息
    global types
    types=Type.objects.all()
    # 根据推荐栏的商品
    scrolls=getGoodsList(1)
    # 获取新品
    newList=getGoodsList(3)
    # 获取热品
    hotList=getGoodsList(2)
    return render(request,"index.html",{"typeList":types,"scroll":scrolls,"newList":newList,"hotList":hotList})

前端页面搭建

在子项目中创建templates文件夹,在该文件夹下创建header.html,foot.html以及index.html作为首页的前端内容

header.html

<div class="header">
    <div class="container">
        <nav class="navbar navbar-default" role="navigation">
            <div class="navbar-header">
                <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
                    <span class="sr-only">Toggle navigation</span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                </button>
                <h1 class="navbar-brand"><a href="/"></a></h1>
            </div>
            <!--navbar-header-->
            <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
                <ul class="nav navbar-nav">
                    <li><a href="/"
                           {% if flag == 1 %}
                           class="active"
                           {% endif %}
                        >首页</a></li>
                    <li class="dropdown">
                        <a href="#" class="dropdown-toggle
                        {% if flag == 2 %}
                            active
                        {% endif %}
                        " data-toggle="dropdown">商品分类<b class="caret"></b></a>
                        <ul class="dropdown-menu multi-column columns-2">
                            <li>
                                <div class="row">
                                    <div class="col-sm-12">
                                        <h4>商品分类</h4>
                                        <ul class="multi-column-dropdown">

                                            <li><a class="list" href="/goods_list">全部系列</a></li>
                                            {% for t in  typeList%}
                                            <li><a class="list" href="/goods_list?typeid={{ t.id }}">{{t.name}}</a></li>
                                            {% endfor %}
                                        </ul>
                                    </div>
                                </div>
                            </li>
                        </ul>
                    </li>
                    <li><a href="/goodsrecommend_list?type=2" {% if  flag == 3 and t == 2 %} class="active" {% endif %}>热销</a></li>
                    <li><a href="/goodsrecommend_list?type=3" {% if  flag == 3 and t == 3 %} class="active" {% endif %}>新品</a></li>

                    {% if user %}
                        <li><a href="/order_list" {% if  flag == 5 %} class="active" {% endif %}>我的订单</a></li>
                        <li><a href="/user_center.jsp" {% if  flag == 4 %} class="active" {% endif %}>个人中心</a></li>
                        <li><a href="/user_logout" >退出</a></li>
                    {% else %}
                        <li><a href="/user_register.jsp" {% if  flag == 10 %} class="active" {% endif %}>注册</a></li>
                        <li><a href="/user_login.jsp" {% if  flag == 9 %} class="active" {% endif %}>登录</a></li>
                    {% endif %}

                    {% if user and user.isadmin %}
                        <li><a href="/admin/index.jsp" target="_blank">后台管理</a></li>
                    {% endif %}
                </ul>
                <!--/.navbar-collapse-->
            </div>
            <!--//navbar-header-->
        </nav>
        <div class="header-info">
            <div class="header-right search-box">
                <a href="javascript:;"><span class="glyphicon glyphicon-search" aria-hidden="true"></span></a>
                <div class="search">
                    <form class="navbar-form" action="/goods_search">
                        <input type="text" class="form-control" name="keyword">
                        <button type="submit" class="btn btn-default
                        {% if flag == 7 %}
                        active
                        {% endif %}
                        " aria-label="Left Align">搜索</button>
                    </form>
                </div>
            </div>

            <div class="header-right cart">
                <a href="goods_cart.jsp">
                    <span class="glyphicon glyphicon-shopping-cart
                    {% if flag == 8 %}
                    active
                    {% endif %}
                    " aria-hidden="true"><span class="card_num">
                        {% if order %}
                            {{ order.amount }}
                        {% else %}
                            0
                        {% endif %}
                        </span></span>
                </a>
            </div>
            <div class="clearfix"> </div>
        </div>
        <div class="clearfix"> </div>
    </div>
</div>

foot.html

<div class="footer">
    <div class="container">
        <div class="text-center">
           
        </div>
    </div>
</div>

index.html

python"><!DOCTYPE html>
<html>
<head>
    {% load static %}
    <title>首页</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <link type="text/css" rel="stylesheet" href="{% static 'css/bootstrap.css' %}">
    <link type="text/css" rel="stylesheet" href="{% static 'css/style.css' %}">
    <script type="text/javascript" src="{% static 'js/jquery.min.js' %}"></script>
    <script type="text/javascript" src="{% static 'js/bootstrap.min.js' %}"></script>
    <script type="text/javascript" src="{% static 'layer/layer.js' %}"></script>
    <script type="text/javascript" src="{% static 'js/cart.js' %}"></script>
</head>
<body>
<!--header-->
{% include "header.html" with flag=1 typeList=typeList %}
<!--banner-->

<div class="banner">
    <div class="container">
        <div id="carousel-example-generic" class="carousel slide" data-ride="carousel">
            <!-- Indicators -->
            <ol class="carousel-indicators" id="olnum">
                {% for g in scroll %}
                    {% if forloop.first %}
                        <li data-target="#carousel-example-generic" data-slide-to="0" class="active"></li>
                        {% else %}
                        <li data-target="#carousel-example-generic" data-slide-to="{{ forloop.counter0 }}"></li>
                    {% endif %}
                {% endfor %}
            </ol>

            <!-- Wrapper for slides -->
            <div class="carousel-inner" role="listbox" id="lunbotu" style="width: 1242px; height: 432px;">
                {% for g in scroll %}
                    {% if forloop.first %}
                        <div class="item active">
                                <h2 class="hdng"><a href="/goods_detail?id={{ g.id }}">{{ g.name }}</a><span></span></h2>
                                <p>今日精选推荐</p>
                                <a class="banner_a" href="javascript:;" onclick="buy({{ g.id }})">立刻购买</a>
                                <div class="banner-text">
                                    <a href="/goods_detail?id={{ g.id }}">
                                        <img src="{% static  g.cover %}" alt="{{ g.name }}" width="350" height="350">
                                    </a>
                                </div>
                            </div>
                        {% else %}
                        <div class="item">
                                <h2 class="hdng"><a href="/goods_detail?id={{ g.id }}">{{ g.name }}</a><span></span></h2>
                                <p>今日精选推荐</p>
                                <a class="banner_a" href="javascript:;" onclick="buy({{ g.id }})">立刻购买</a>
                                <div class="banner-text">
                                    <a href="/goods_detail?id={{ g.id }}">
                                        <img src="{% static  g.cover %}" alt="{{ g.name }}" width="350" height="350">
                                    </a>
                                </div>
                            </div>
                    {% endif %}
                {% endfor %}

            </div>

        </div>
    </div>
</div>

<!--//banner-->

<div class="subscribe2"></div>

<!--gallery-->
<div class="gallery">
    <div class="container">
        <div class="alert alert-danger">热销推荐</div>
        <div class="gallery-grids">
            {% for g in hotList %}
            <div class="col-md-4 gallery-grid glry-two">
                    <a href="/goods_detail?id={{ g.id }}">
                        <img src="{% static  g.cover %}" class="img-responsive" alt="{{ g.name }}" width="350" height="350"/>
                    </a>
                    <div class="gallery-info galrr-info-two">
                        <p>
                            <span class="glyphicon glyphicon-eye-open" aria-hidden="true"></span>
                            <a href="/goods_detail?id={{ g.id }}">查看详情</a>
                        </p>
                        <a class="shop" href="javascript:;" onclick="buy({{ g.id }})">立刻购买</a>
                        <div class="clearfix"></div>
                    </div>
                    <div class="galy-info">
                        <p>{{ g.typeName }} > {{ g.name }}</p>
                        <div class="galry">
                            <div class="prices">
                                <h5 class="item_price">¥ {{ g.price }}</h5>
                            </div>
                            <div class="clearfix"></div>
                        </div>
                    </div>
                </div>
            {% endfor %}

        </div>

        <div class="clearfix"></div>
        <div class="alert alert-info">新品推荐</div>
        <div class="gallery-grids">
            {% for g in newList %}
            <div class="col-md-3 gallery-grid ">
                    <a href="/goods_detail?id={{ g.id }}">
                        <img src="{% static  g.cover %}" class="img-responsive" alt="{{ g.name }}"/>
                    </a>
                    <div class="gallery-info">
                        <p>
                            <span class="glyphicon glyphicon-eye-open" aria-hidden="true"></span>
                            <a href="/goods_detail?id={{ g.id }}">查看详情</a>
                        </p>
                        <a class="shop" href="javascript:;" onclick="buy({{ g.id }})">立刻购买</a>
                        <div class="clearfix"></div>
                    </div>
                    <div class="galy-info">
                        <p>{{ g.typeName }} > {{ g.name }}</p>
                        <div class="galry">
                            <div class="prices">
                                <h5 class="item_price">¥ {{ g.price }}</h5>
                            </div>
                            <div class="clearfix"></div>
                        </div>
                    </div>
                </div>
            {% endfor %}
        </div>
    </div>
</div>
<!--//gallery-->

<!--subscribe-->
<div class="subscribe"></div>
<!--//subscribe-->
<!--footer-->
{% include "footer.html" %}
</body>
</html>

在主项目的urls.py文件中定义请求地址,用于浏览器访问views.py文件

python"> path('',views.index),

 在PyCharm的内置dos窗口中输入以下指令启动服务器

python">python manage.py runserver

浏览器中访问该地址


http://www.niftyadmin.cn/n/5534848.html

相关文章

【linux/shell】shell中使用for循环读取数据

目录 一.for循环从列表中读取数据的几种形式 二.for循环从配置文件读取数据 三.for循环用通配符读取目录 四.for循环带有数字变量 一.for循环从列表中读取数据的几种形式 #!/bin/bash listl"aa bb cc" list2aa bb ccfor i in $list3 doecho $i done 使用这种形…

安卓应用开发学习:获取经纬度及地理位置描述信息

前段时间&#xff0c;我在学习鸿蒙应用开发的过程中&#xff0c;在鸿蒙系统的手机上实现了获取经纬度及地理位置描述信息&#xff08;鸿蒙应用开发学习&#xff1a;手机位置信息进阶&#xff0c;从经纬度数据获取地理位置描述信息&#xff09;。反而学习时间更长的安卓应用开发…

生信算法9 - 正则表达式匹配氨基酸序列、核型和字符串

1. 使用正则表达式匹配指定的氨基酸序列 import re# 氨基酸序列 seq VSVLTMFRYAGWLDRLYMLVGTQLAAIIHGVALPLMMLI# 正则表达式匹配 match re.search(r[A|G]W, seq)# 打印match及匹配到开始位置和结束位置 print(match) # <re.Match object; span(10, 12), matchGW> prin…

视频监控平台web客户端的免密查看视频页:在PC浏览器上如何调试手机上的前端网页(PC上的手机浏览器的开发者工具)

目录 一、手机上做前端页面开发调试 1、背景 2、视频监控平台AS-V1000的视频分享页 3、调试手机前端页面代码的条件 二、手机端的准备工作 1、手机准备 2、手机的开发者模式 3、PC和手机的连接 &#xff08;1&#xff09;进入调试模式 &#xff08;2&#xff09;选择…

大模型日报 2024-07-04

大模型日报 2024-07-04 一、大模型资讯 大厂高管转战 AI 创业盘点&#xff1a;超 25 人&#xff0c;覆盖全产业链&#xff0c;AI 应用最热门 涉及多家互联网大厂高管加入生成式 AI 创业&#xff0c;涵盖多个领域及融资情况。 腾讯云发布自研大数据高性能计算引擎 Meson 软硬一体…

STM32第十二课:ADC检测烟雾浓度(MQ2)

文章目录 需求一、MQ-2 气体传感器特点应用电路及引脚 二、实现流程1.开时钟&#xff0c;分频&#xff0c;配IO2.配置ADC的工作模式3.配置通道4.复位&#xff0c;AD校准5.数值的获取 需求实现总结 需求 使用ADC将MQ2模块检测到的烟雾浓度模拟量转化为数字量。 最后&#xff0c…

腾讯云函数node.js返回自动带反斜杠

云函数返回自动带反斜杠 这里建立了如下一个云函数,目的是当APP过来请求的时候响应支持的版本号: use strict; function main_ret(status,code){let ret {status: status,error: code};return JSON.stringify(ret); } exports.main_handler async (event, context) > {/…

TCP、UDP详解

目录 1.区别 1.1 概括 1.2 详解 2.TCP 2.1 内容 2.2 可靠传输 2.2.1 确认应答 2.2.2 超时重传 2.2.3 连接管理 三次握手 四次挥手 2.2.4 滑动窗口 2.2.5 流量控制 2.2.6 拥塞控制 2.2.7 延时应答 2.2.8 捎带应答 2.2.9 面向字节流 2.2.10 异常情况的处理 1.…