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中统一处理。
此处评论已关闭