zoukankan      html  css  js  c++  java
  • Django项目总结:项目主页

    【项目功能】

    -- 主页面显示

      -- 数据查询,显示

    -- 商品数据展示

      -- 级联查询,排序

    -- 用户系统

      -- 核心系统

    -- 购物车系统

      -- 商品和用户的关系

      -- 订单系统

        -- 购物车数据转换成订单

      -- 支付系统

        -- 接口调用

    -- 扩展

      -- 地址管理系统

      -- 积分系统

      -- 会员级别

      -- 评价系统

      -- 优惠卷系统

      -- 数据安全

      -- 过滤器

      -- 反爬

      -- 权限

        -- 用户角色

    -- 部署

      -- 动静分离部署

     

    【开发流程】

    -- 基本工程搭建

    -- 前端静态搭建

    -- Model => DB

    -- 业务逻辑开发

    -- 前后端交互

      -- Ajax

     

    -- 静态资源创建

    【前端基础框架】

    -- base类(父模板)

      -- 导入通用资源

        -- reset.py 重置浏览器标签的样式表

    -- block挖坑,添加样式

    -- base.py

    -- base_main.py

    -- main

      -- home.py

      -- market.py

      -- cart.py

      -- mine.py

     

    -- 前端适配

      -- 推荐百分比不推荐固定尺寸

      -- 适配单位

        -- px

        -- em

        -- 默认相对于父级元素

        -- 默认大小1em = 16px

      -- rem

        -- 相对单位,相对于根基元素

        -- 默认大小 1rem=16px

      -- 弹性盒模型

      -- 响应式布局

    -- 项目中

      -- 屏幕宽度的十分之一作为rem的基础单位

     

    【数据展示】

    -- 建立数据

      -- 先建表

      -- Model -> SQL

        -- trackid 原表中的id

    -- 插入数据

    -- 数据查询

     

    【HOME】

    -- urls.py

    from django.contrib import admin
    from django.urls import path, include
    from GPAXF import settings
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('axf/', include("App.urls", namespace='axf')),
    ]

     

    -- views.py

    from django.shortcuts import render
    from App.models import MainWheel, MainNav, MainMustBuy, MainShop, MainShow
    
    def home(request):
    
        main_wheels = MainWheel.objects.all()
    
        main_navs = MainNav.objects.all()
    
        main_mustbuy = MainMustBuy.objects.all()
    
        main_shops = MainShop.objects.all()
    
        main_shop0_1 = main_shops[0:1]
    
        main_shop1_3 = main_shops[1:3]
    
        main_shop3_7 = main_shops[3:7]
    
        main_shop7_11 = main_shops[7:11]
    
        main_shows = MainShow.objects.all()
    
        data = {
            "title": "HOME",
            "main_wheels": main_wheels,
            "main_navs": main_navs,
            "main_mustbuy": main_mustbuy,
            "main_shop0_1": main_shop0_1,
            "main_shop1_3": main_shop1_3,
            "main_shop3_7": main_shop3_7,
            "main_shop7_11": main_shop7_11,
            "main_shows": main_shows,
        }
    
        return render(request, 'main/home.html', context=data)
    
    
    def market(request):
        return render(request, 'main/market.html')
    
    
    def cart(request):
        return render(request, 'main/cart.html')
    
    
    def mine(request):
        return render(request, 'main/mine.html')

     

    -- models.py

    from django.db import models
    
    
    class Main(models.Model):
        img = models.CharField(max_length=255)
        name = models.CharField(max_length=64)
        trackid = models.IntegerField(default=1)
    
        class Meta:
            abstract = True
    
    
    class MainWheel(Main):
        """
        axf_wheel(img,name,trackid)
        """
    
        class Meta:
            db_table = 'axf_wheel'
    
    
    class MainNav(Main):
        """
        axf_nav(img,name,trackid)
        """
    
        class Meta:
            db_table = 'axf_nav'
    
    
    class MainMustBuy(Main):
        """
        axf_mustbuy(img,name,trackid)
        """
    
        class Meta:
            db_table = 'axf_mustbuy'
    
    
    class MainShop(Main):
        """
        axf_shop(img,name,trackid)
        """
    
        class Meta:
            db_table = 'axf_shop'
    
    
    class MainShow(Main):
        """
        axf_mainshow(trackid,name,img,categoryid,brandname,img1,childcid1,productid1,longname1,price1,marketprice1,img2,childcid2,productid2,longname2,price2,marketprice2,img3,childcid3,productid3,longname3,price3,marketprice3)
        """
        categoryid = models.IntegerField(default=1)
        brandname = models.CharField(max_length=64)
        img1 = models.CharField(max_length=255)
        childcid1 = models.IntegerField(default=1)
        productid1 = models.IntegerField(default=1)
        longname1 = models.CharField(max_length=128)
        price1 = models.FloatField(default=1)
        marketprice1 = models.FloatField(default=0)
        img2 = models.CharField(max_length=255)
        childcid2 = models.IntegerField(default=1)
        productid2 = models.IntegerField(default=1)
        longname2 = models.CharField(max_length=128)
        price2 = models.FloatField(default=1)
        marketprice2 = models.FloatField(default=0)
        img3 = models.CharField(max_length=255)
        childcid3 = models.IntegerField(default=1)
        productid3 = models.IntegerField(default=1)
        longname3 = models.CharField(max_length=128)
        price3 = models.FloatField(default=1)
        marketprice3 = models.FloatField(default=0)
    
        class Meta:
            db_table = 'axf_mainshow'

    -- home.html

    {% extends 'base_main.html' %}
    {% load static %}
    
    {% block ext_css %}
        {{ block.super }}
        <link rel="stylesheet" href="{% static 'axf/main/css/home.css' %}">
    {% endblock %}
    
    {% block ext_js %}
        {{ block.super }}
        <script type="text/javascript" src="{% static 'js/swiper.jquery.js' %}"></script>
        <script type="text/javascript" src="{% static 'axf/main/js/home.js' %}"></script>
    {% endblock %}
    
    {% block content %}
        <div id="home">
        {# 首页顶部轮播,选择器topSwipe #}
            <div class="swiper-container" id="topSwiper">
                <div class="swiper-wrapper">
                    {% for main_wheel in main_wheels %}
    
                        <div class="swiper-slide">
                            <img src="{{ main_wheel.img }}" alt="{{ main_wheel.name }}">
                        </div>
    
                    {% endfor %}
                </div>
                <!-- 如果需要分页器 -->
                <div class="swiper-pagination"></div>
            </div>
    
        {# 首页顶部导航 #}
            <div class="topMenu">
                <nav>
                    <ul>
                        {% for main_nav in main_navs %}
                            <li>
                                <img src="{{ main_nav.img }}" alt="{{ main_nav.name  }}">
                                <span>{{ main_nav.name }}</span>
                            </li>
                        {% endfor %}
                    </ul>
                </nav>
    
            </div>
    
        {# 首页必购数据 #}
            <div class="swiper-container" id="swiperMenu">
                <ul class="swiper-wrapper">
                    {% for main_mustbuy in main_mustbuy %}
    
                        <li class="swiper-slide">
                            <img src="{{ main_mustbuy.img }}" alt="{{ main_mustbuy.name }}">
                        </li>
    
                    {% endfor %}
                </ul>
            </div>
    
        {# 首页Shop #}
            <div class="shop_container">
                <h2>
                    <img src="{{ main_shop0_1.0.img }}" alt="{{ main_shop0_1.0.name }}">
                </h2>
    
                <fieldset>
                    {% for main_shop in main_shop1_3 %}
                        <a href="#">
                            <img src="{{ main_shop.img }}" alt="{{ main_shop.name }}">
                        </a>
                    {% endfor %}
                </fieldset>
    
                <ul>
                    {% for main_shop in main_shop3_7 %}
                        <li>
                            <img src="{{ main_shop.img }}" alt="{{ main_shop.name }}">
                            <span>{{ main_shop.name }}</span>
                        </li>
                    {% endfor %}
                </ul>
    
                <ol>
                    {% for main_shop in main_shop7_11 %}
                        <li>
                            <a href="#">
                                <img src="{{ main_shop.img }}" alt="{{ main_shop.name }}">
                            </a>
                        </li>
                    {% endfor %}
                </ol>
            </div>
    
        {# 主显示 #}
            <ul>
                {% for main_show in main_shows %}
                    <li class="mainInfo">
                        <section>
                            <h3>{{ main_show.name }}
                                <a href="#">more>&gt;</a>
                                <span></span>
                            </h3>
    
                            <div>
                                <a href="#">
                                    <img src="{{ main_show.img }}" alt="{{ main_show.name }}">
                                </a>
                            </div>
    
                            <ul>
                                <li>
                                    <a href="#">
                                        <img src="{{ main_show.img1 }}" alt="{{ main_show.longname1 }}">
                                        <p class="description">{{ main_show.longname1 }}</p>
                                        <span>{{ main_show.price1 }}</span>
                                        <s>{{ main_show.marketprice1 }}</s>
                                    </a>
                                    <button>
                                        <span>+</span>
                                    </button>
                                </li>
    
                                <li>
                                    <a href="#">
                                        <img src="{{ main_show.img2 }}" alt="{{ main_show.longname2 }}">
                                        <p class="description">{{ main_show.longname2 }}</p>
                                        <span>{{ main_show.price2 }}</span>
                                        <s>{{ main_show.marketprice2 }}</s>
                                    </a>
                                    <button>
                                        <span>+</span>
                                    </button>
                                </li>
    
                                <li>
                                    <a href="#">
                                        <img src="{{ main_show.img3 }}" alt="{{ main_show.longname3 }}">
                                        <p class="description">{{ main_show.longname3 }}</p>
                                        <span>{{ main_show.price3 }}</span>
                                        <s>{{ main_show.marketprice3 }}</s>
                                    </a>
                                    <button>
                                        <span>+</span>
                                    </button>
                                </li>
                            </ul>
                        </section>
                    </li>
                {% endfor %}
            </ul>
        </div>
    {% endblock %}

     

    -- base.py

    # 加载静态
    {% load static %}
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        # 移动端,缩放比例1,禁止用户缩放
        <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
        <title>{{ title }}</title>
    
        <link rel="stylesheet" href="{% static 'css/bootstrap.css' %}">
        <link rel="stylesheet" href="{% static 'css/swiper.css' %}">
        <link rel="stylesheet" href="{% static 'css/reset.css' %}">
    
        {% block ext_css %}
    
        {% endblock %}
    
    </head>
    <body>
        {% block header %}
    
        {% endblock %}
    
        {% block content %}
    
        {% endblock %}
    
        {% block footer %}
    
        {% endblock %}
    
        <script type="text/javascript" src="{% static 'js/jquery.js' %}"></script>
        <script type="text/javascript" src="{% static 'js/bootstrap.js' %}"></script>
        <script type="text/javascript" src="{% static 'js/base.js' %}"></script>
        {% block ext_js %}
    
        {% endblock %}
    </body>
    </html>

     

    -- base_main.py

    {% extends 'base.html' %}
    {% load static %}
    
    {% block ext_css %}
        {{ block.super }}
        <link rel="stylesheet" href="{% static 'axf/main/css/main.css' %}">
    {% endblock %}
    
    {% block header %}
        <header></header>
    {% endblock %}
    
    {% block footer %}
        <footer>
            <a href="{% url 'axf:home' %}" class="home">
                <dl>
                    <dt>
                        <span></span>
                    </dt>
                    <dd>HOME</dd>
                </dl>
            </a>
            <a href="{% url 'axf:market' %}" class="market">
                <dl>
                    <dt>
                        <span></span>
                    </dt>
                    <dd>MARKET</dd>
                </dl>
            </a>
            <a href="{% url 'axf:cart' %}" class="cart">
                <dl>
                    <dt>
                        <span></span>
                    </dt>
                    <dd>CART</dd>
                </dl>
            </a>
            <a href="{% url 'axf:mine' %}" class="mine">
                <dl>
                    <dt>
                        <span></span>
                    </dt>
                    <dd>MINE</dd>
                </dl>
            </a>
        </footer>
    {% endblock %}

    -- home.css

    /*
        底部图标和文字
    */
    footer .home span {
        background: url(/static/img/home_selected.png) no-repeat;
        background-size: 0.513889rem;
    }
    
    footer .home dd {
        color: orange;
    }
    
    #home {
        font-family: "Microsoft YaHei", "Helvetica Neue", Helvetica, STHeiTi, Arial, sans-serif;
        overflow: auto;
        height: 100%;
        width: 100%;
        padding: 1.5rem 0 3rem;
        position: fixed;
    }
    
    /*
        首页顶部轮播
    */
    #topSwiper {
        height: 3.95rem;
        width: 10rem;
        overflow: hidden;
    }
    
    #topSwiper div a {
        display: inline-block;
        height: 3.95rem;
        width: 10rem;
    }
    
    #topSwiper img {
        width: 100%;
        height: 100%;
    }
    
    /*
        首页顶部导航
    */
    .topMenu {
        padding-bottom: 0;
    }
    
    .topMenu nav {
        margin: 0.35rem 0 0.26rem;
        background: white;
    }
    
    .topMenu nav ul {
        display: flex;
    }
    
    .topMenu nav li {
        width: 2.5rem;
        text-align: center;
        font-size: 0.35rem;
    }
    
    .topMenu nav li img {
        width: 2.5rem;
    }
    
    /*
     首页必购数据
     */
    #swiperMenu {
        width: 100%;
    }
    
    #swiperMenu li img {
        width: 100%;
    }
    
    
    /*
        Shop
     */
    .shop_container {
        background: white;
    }
    
    .shop_container h2 img {
        margin-top: 0.3rem;
        width: 100%;
    }
    
    
    .shop_container fieldset {
        border: none;
        padding: 0;
    }
    
    .shop_container fieldset > a {
        display: inline-block;
        width: 49%;
    }
    
    .shop_container fieldset img {
        width: 100%;
    }
    
    
    .shop_container ul {
        display: flex;
    }
    
    .shop_container ul li {
        width: 2.5rem;
        text-align: center;
        font-size: 0.35rem;
    }
    
    .shop_container ul li img {
        width: 2.5rem;
    }
    
    
    .shop_container ol {
        display: flex;
        flex-wrap: wrap;
    }
    
    .shop_container ol li {
        list-style: none;
        width: 5rem;
    }
    
    .shop_container > ol a {
        display: block;
    }
    
    .shop_container ol a img {
        width: 100%;
    }
    
    /*
        主显示
     */
    .mainInfo {
        background-color: white;
    }
    
    .mainInfo > section {
        margin: 0.2rem auto 0;
        padding: 0.2rem 0;
        width: 9.2rem;
    }
    
    .mainInfo > section h3 {
        text-align: center;
        height: 1.2rem;
        position: relative;
    }
    
    .mainInfo > section h3 a {
        color: grey;
        font-size: 0.3rem;
        line-height: 0;
        position: absolute;
        right: 0.1rem;
        display: block;
    }
    
    .mainInfo > section h3 > span {
        background-color: yellow;
        width: 0.6rem;
        height: 0.1rem;
        position: absolute;
        bottom: 0.25rem;
        left: 4.3rem;
    }
    
    
    .mainInfo > section > div > a > img {
        width: 100%;
    }
    
    
    .mainInfo > section > ul {
        display: flex;
        justify-content: space-around;
    }
    
    .mainInfo > section > ul > li {
        width: 2.6rem;
        position: relative;
    }
    
    .mainInfo > section > ul > li > a {
        font-size: 0.4rem;
        color: red;
        display: block;
    }
    
    .mainInfo > section > ul > li > a > span:before {
        color: red;
        content: "$";
    }
    
    .mainInfo > section > ul > li > a > img {
        width: 100%;
    }
    
    .mainInfo > section > ul > li > a > s {
        color: grey;
        font-size: 0.3rem;
    }
    
    .mainInfo > section > ul > li > a > s:before {
        color: grey;
        content: "$";
    }
    
    .mainInfo .description {
        font-size: 0.37rem;
        color: black;
        width: 100%;
        display: block;
        line-height: 1.2em;
        height: 2.4em;
        overflow: hidden;
        text-overflow: ellipsis;
        display: -webkit-box;
        -webkit-box-orient: vertical;
        -webkit-line-clamp: 2;
    }
    
    .mainInfo > section > ul > li > button {
        border: 1px solid lightgrey;
        border-radius: 1111px;
        width: 0.5rem;
        height: 0.5rem;
        display: block;
        line-height: 0.0rem;
        text-align: center;
        color: orangered;
        font-size: 0.5rem;
        position: absolute;
        right: 0;
        top: 2.9rem;
        background: white;
    }
    
    .mainInfo > section > ul > li > button > span {
        position: relative;
        /*top: -0.05rem;*/
        margin: auto;
    }
  • 相关阅读:
    curl命令
    sublime 光标选中多行
    mysql删除重复记录并且只保留一条
    Laravel 如何实现 Excel 导入及导出功能
    laravel中DB查询数据库后,返回的对象转为数组
    【文件上传/解析技巧拓展】————1、我的WafBypass之道(Upload篇)
    【文件包含技巧拓展】————5、文件包含漏洞(绕过姿势)
    【文件包含技巧拓展】————4、文件包含漏洞(下)
    【文件包含技巧拓展】————3、文件包含漏洞(上)
    【文件包含技巧拓展】————2、zip或phar协议包含文件
  • 原文地址:https://www.cnblogs.com/dc2019/p/13369109.html
Copyright © 2011-2022 走看看