Hallo,我是Charlie!
在Day04当中,我们把前端页面结束了,而今天要开始动工後端罗。
================================◉‿◉=================================
首先是Django架构的部分,这里规划成以下几个区块:
所以可以使用指令来新增APP:
$ python manage.py startapp [APP名称]
在新增完APP之後,结构会是像这样:
里面每个APP都会有像这样的结构:
其中apps.py是Config,admin则是资料库管理(在product里面会用到),models则是资料模型,views则是视图,另外也会再建立urls.py用来管理路由。
建立完APP之後,必须将APP加入设定,打开[专案名称]\settings.py,在installed_APP底下新增几个APP:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'product',
'usercart',
'userorder',
'users'
]
建立完基本架构後,我们先规划一下资料库。
资料库的话会有几点:
所以要在各个model中,建立资料模型,以users为范例:
from django.db import models
class User(models.Model):
id = models.AutoField(primary_key = True)
name = models.CharField(max_length = 255,verbose_name = "用户名称")
password = models.CharField(max_length = 255,verbose_name = "密码")
phone = models.CharField(max_length = 255,verbose_name = "电话")
address = models.CharField(max_length = 255,verbose_name = "地址")
created_time = models.DateTimeField(auto_now = True)
modified_time = models.DateTimeField(auto_now = True)
class Meta:
db_table = "users"
在此介绍一些django常用的model Field:
还有外键、主键相关:
把栏位都设置好後,必须设置资料库参数,到[专案名称]\settings.py设置:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'keyboardmarket[资料库名称]',
'USER': 'root[MySQL用户名]',
'PASSWORD': 'MySQL密码',
'HOST': '127.0.0.1',
'PORT': '3306',
}
}
设置完後,先登入MySQL,创建keyboardmarket资料库:
$ create database keyboardmarket;
之後打开manage.py,右键”Open Terminal Here”,打开cmd後输入以下两个指令:
注意!两者顺序不可调换
$ python manage.py makemigrations
$ python manage.py migrate
migrate成功後,到db查看,即可看到新增完的内容:
接着建立一个资料夹叫tools,里面建立一个db.py,这个db.py我们要建立Enum,让我们在填入状态时可以直接使用常量:
from enum import Enum
class CartStatus(Enum):
deactivate = 0
activate = 1
class OrderStatus(Enum):
deactivate = 0
notPaid = 1
paid = 2
shipping = 3
class ProductStatus(Enum):
deactivate = 0
activate = 1
class UserStatus(Enum):
deactivate = 0
activate = 1
class ProductCategory(Enum):
keyboard = 0
earphone = 1
mouse = 2
desktop = 3
if __name__ == '__main__':
print(UserStatus.deactivate.value)
执行db.py,如果成功的话,会印出0。
接下来要使用django自带的後台管理商品,先使用以下指令建立超级管理员:
$ python manage.py createsuperuser
在product中的admin.py新增管理模组:
from django.contrib import admin
from .models import Product
admin.site.register(Product)
在新增之前,因为有product的image要处理,所以先到settings.py新增media root:
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')
并在keyboardmarket中的urls.py加入static路径:
from django.contrib import admin
from django.urls import path
from keyboardmarket import settings
from django.conf.urls.static import static
urlpatterns = [
path('admin/', admin.site.urls),
]
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
然後运行网站,使用127.0.0.1:8000/admin进入後台:
点进Products,里面有一个ADD PRODUCTS的按钮,点下去即可新增商品:
新增完後查看专案,会发现多出一个media的资料夹,里面有刚刚上传的照片:
接着打开127.0.0.1:8000/media/productImage/airpod.png,如果有成功显示刚刚的图片就成功罗。
之後就是一笔一笔新建商品,把商品的资料库整个建立起来。
================================◉‿◉=================================
Day05结束了!今天我们完成了Django的基本架构跟资料库,明天我们将开始做用户的登入、注册,See ya next day!
<<: [Day 14] 实作 API Role-Based Authorization
前言: 今天来看 介面与抽象类别 / 泛型 / 扩充 大纲: Interface 介面,像是一个SO...
Chap.I Practical drill 实战演练 以下内容来自这里 Prat1. Create...
Outline 可以把这三个东西理解成 class 的更多运用。 C++ Strings : 比之前...
开始绘制维修单派工关联表,画错蛮多次。我学习的方式,先在网路上找相关的图参考,思考後进行绘制动作。画...
路过多少门牌 迷失多少时光 流浪於内心深处 什麽 什麽都是迷惘 挤过多少人群 踩过多少小巷 流浪於...