PeiQi-1项目

这个项目:

  • 用户端
  • 采用MTV    

    • 前后端都需要我们自己去搞定
  • 糅合了之前学过的知识点

项目需求

  • 主页面显示

    • 最简单的数据查询,显示
  • 商品数据展示

    • 级联查询,排序(所有的数据基本都有这些,淘宝上根据销量,价格排序,根据品牌,物流搜索等等)
  • 用户系统

    • 核心系统,所有系统中用户系统是最核心的
    • 产品经理喜欢吹产品闭环,把用户从头到尾圈到自己的产品中,然后薅羊毛,比如微信,刚开始开发免费,后来需要认证(认证一下两三百),再添加功能就需要再交费,假如有50万用户,一人赚1元,就有50W。所以只要有了用户,别的都好说。比如腾讯有些项目不是比别人做得好,只需要关联qq号,用户群体就建立了起来。
  • 购物车系统

    • 相对复杂,因为前面的系统没有和其他表产生关联。
    • 商品和用户的关系
    • 还需要级联形成订单系统

      • 购物车数据转换成订单
    • 订单系统级联支付系统

      • 只需要接口调用支付宝,支付宝不会把核心业务展示出来,只需要你提供订单编号,交易金额,标题付款以及一些小信息传给支付宝,支付宝帮你弹出界面(此时与自己的项目网站无关,全是支付宝的界面)界面都是一套支付宝原生界面。
  • 扩展需求

    • 地址管理系统
    • 积分系统

      • 类似于心悦会员
    • 会员级别系统
    • 评价系统
    • 优惠卷系统

      • 问题越细,就越复杂,比如优惠券,有普通优惠券,满减券,品类券,百分比券,限行券使用的区域,限定商品,默认下单显示优惠最大的券,这样考虑的问题就越来越多。
    • 数据安全
    • 过滤器
    • 反爬
    • 权限

      • 用户角色(商家用户,买家,管理员用户)
  • 部署

    • 动静分离部署

    开始开发

  • 基本工程搭建
  • 前端静态搭建
  • Model->DB
  • 业务逻辑开发
  • 前后端一起来

    • ajax

    基本工程搭建


常规配置

  • ALLOWED_HOSTS

    ALLOWED_HOSTS = ['*']
  • 语言/时区

    LANGUAGE_CODE = 'zh-hans'
    
    TIME_ZONE = 'Asia/Shanghai'
  • static

    • 新建static文件夹,注意是在项目的根目录下,而不是应用的目录下
    • 注册地址
    STATICFILES_DIRS = [
      os.path.join(BASE_DIR, 'static'),
    ]
  • 数据库

    • settings设置
    DATABASES = {
      'default': {
          'ENGINE': 'django.db.backends.mysql',
          'NAME': 'PeiQi1',
          'USER': 'root',
          'PASSWORD': '3825447403',
          'HOST': 'localhost',
          'PORT': 3306,
      }
    }
    • 并且伪装数据库,我们可以在manage.py中将导入伪装数据库的代码(以前是在应用中的__init__.py中)

      只要我们在使用数据库之前初始化好数据库就可以了。(也可以放在settings.py中,只是我们常见放在了__init__.py中)

import pymysql
pymysql.install_as_MySQLdb()
  • 在终端创建数据库
mysql> create database PeiQi;
Query OK, 1 row affected (0.58 sec)

mysql> set names 'utf8';
Query OK, 0 rows affected, 1 warning (0.35 sec)

然后迁移python manage.py migrate

接着写urls测试环境

from django.conf.urls import url

from App import views

urlpatterns = [
    url(r'^index/', views.index, name='index')
]

views:

from django.http import HttpResponse
from django.shortcuts import render


def index(request):
    return HttpResponse('index')

在总路由urls.py中添加App的urls.py

from django.conf.urls import url, include
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^peiqi1/', include(('App.urls', 'App'), namespace='peiqi1')),
]

测试


这样我们最基本的都有了。

完善static

在static文件夹中创建css,js,fons,img,uploads.

并且settings.py设置MEDIA_ROOT

# 用于文件或者头像上传
MEDIA_ROOT = os.path.join(BASE_DIR, 'static/uploads')

创建base html模板

每个模块都要创建自己的Base
接下来,在我们写页面之前是有一个通用的Base类的
在模板文件夹中新建base.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title><{{ title }}/title>

    {% block ext_css %}   {# 子类会用到css,我们在这里做好规划 #}

    {% endblock %}
</head>
<body>
    {% block header %}

    {% endblock %}

    {% block content %}

    {% endblock %}
    
    {% block footer %}
    
    {% endblock %}


    {% block ext_js %}  {# 页面还会用到js,js一般放在最后,js作用是让页面变成动态 #}

    {% endblock %}
</body>
</html>

这是最原始的基类,出了最原始的基类

还有在我们做每级模块的时候都要有自己的base

比如针对于主页面,我们还要建立base_main.html

{% extends 'base.html' %}   {# 先继承base #}

{% block ext_css %} {# 这里留给以后去填坑 #}

{% endblock %}

以后针对于用户来写还要有base_user,针对于订单去写还要有base_order,一定要记得创建base类
这里3,5两行在佩奇1号项目中是不写的。
base类作用:方便统一处理
举个例子,我们现在针对于用户模块,所有用户的密码都要做一个数据的安全转换,这样只要涉及到密码都需要去修改,我们可以在base中统一处理。

最后修改:2024 年 03 月 13 日
如果觉得我的文章对你有用,请随意赞赏