第一章、天天生鲜项目框架搭建
天天生鮮項目搭建指南
一、環境搭建指南
1、首先下載依賴環境
| Django版本 | |
| mysql版本 |
2、環境搭建
2.1、首先創建文件夾,
本人在Windows電腦F盤創建文件夾Django,并在里面創建子目錄dailyfresh_version,運行電腦終端Windows PowerShell,首先按照下面順序進行配置:
# 第一步,對PowerShell的一種配置 Set-ExecutionPolicy Unrestricted # 第二步,安裝Django所需的虛擬環境 pip install virtualenv # 第三步,進入當前用戶名 cd F:\Django\dailyfresh_version # 第四步,在打開的文件佳下面下載Django項目所依賴的東西 virtualenv . # 第五步,進入文件夾下的虛擬環境,使用下列指令切換, .\Scripts\activate #ps:如果你想取消虛擬環境,運行deactivate # 第六步,安裝django pip install django #ps:如果你需要安裝制定版本,運行pip install django==版本號 # 第七步,創建項目名,我的項目名為dailyfresh django-admin startproject 項目名 #django-admin startproject dailyfresh # 第八步,進入項目 cd 項目名 #ps: cd dailyfresh # 第九步,測試程序是否運行成功 python manage.py runserver # 第十步,如果需要用VS code軟件打開,直接運行下面指令 code .2.2 項目框架搭建
首先,利用Pycharm打開新建立的項目文件,后期新建項目直接在pycharm下操作
2.2.1 首先安裝富文本,使用如下指令
# 第一步 安裝富文本編輯器插件 pip install django-tinymce==2.6.0 # 第二步 在setting中添加該應用 INSTALLED_APPS = [#第三方插件應用'tinymce', #富文本編輯器#系統自帶應用'django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles', ] # 第三步 在setting中繼續配置富文本編輯器 #富文本編輯器配置 TINYMCE_DEFAULT_CONFIG = {'theme': 'advanced','width': 600,'height': 400, } # 第四步 在setting的同級目錄下的url.py中添加如下 from django.urls import path,include # 導入兩個包# 添加如此指令 urlpatterns = [path('admin/', admin.site.urls),path('tinymce/',include(('tinymce.urls','tinymce'))), #富文本編輯器]富文本編輯器與模型類有關,富文本編輯器應該查看模型類。
2.2.2 天天生鮮主要包含購物車、貨物、用戶、還有主頁幾個功能框,因此我們需要創建這幾個app,首先運行如下指令創建
# 第一步,創建四個應用 python manage.py startapp user python manage.py startapp goods python manage.py startapp cart python manage.py startapp order然后我們新建一個目錄來存放這幾個應用,并把這些應用放在里頭,然后需要去settings中配置應用,本來要寫路徑,就是這樣寫apps.user,但是會很麻煩,所以我們打算直接寫user、order等等,那我們可以做如下配置
# 第一步,在setting中指定絕對路徑 import os import sys # 調用里面的path路徑 # BASE_DIR 項目在哪,絕對路徑就在哪? sys.path.insert(0,os.path.join(BASE_DIR,'apps')) # 項目的絕對路徑# 第二步,添加各模塊應用 INSTALLED_APPS = [#自定義應用'user', #用戶模塊'goods', #商品模塊'cart', #購物車模塊'order', #訂單模塊#第三方插件應用'tinymce', #富文本編輯器#系統自帶應用'django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles', ]2.2.3 添加一個空目錄templates,用于存放靜態文件,然后在setting中做如下配置
TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates','DIRS': [os.path.join(BASE_DIR,'templates')],'APP_DIRS': True,'OPTIONS': {'context_processors': ['django.template.context_processors.debug','django.template.context_processors.request','django.contrib.auth.context_processors.auth','django.contrib.messages.context_processors.messages',],},}, ]2.2.4 創建數據庫,打開linux,安裝mysql,我的是在Ubuntu20.4安裝的,下面提供mysql的安裝教程,
如何在Ubuntu上安裝mysql
1、更新鏡像源,前面安裝時已經配置了,如果沒有配置對著下面的參考指南看下
2、下載安裝mysql
sudo apt-get install mysql-server # 第一步 sudo apt-get install mysql-client # 第二步 sudo apt-get install libmysqlclient-dev # 第三步3、下載數據庫之后沒有密碼,故我們根據如下配置
mysql -u root -p # 第一步找到mysql的根目錄:可根據如下流程
pwd(cd …)——>home(cd …)——>ls——>cd /etc/mysql——>ls——>sudo cat debian.cnf——>
指令如下
cd.. # 第一步 cd.. # 第二步 ls # 第三步 cd /etc/mysql # 第四步 ls # 第五步 sudo cat debian.cnf # 第五步登錄mysql,用sudo cat debian.cnf獲得的賬號密碼(倒數第一是密碼,倒數第二是賬號)
mysql -u debian-sys-maint -p輸入密碼
然后退回MySQL,退回主界面再次進入mysql更改密碼,如果無法進入,就用管理員身份進入
進入mysql后,執行下面的更改秘密啊
alter user 'root'@'localhost' identified by '123456'然后退回主界面,輸入
mysql -u root -p # EnterPassword: 輸入自己設置的密碼發現還是無法進入,然后用管理員模式,也就是前面加個sudo,發現可以進入。所以我們還需要最后設置一步,我們最后一次進入debian-sys-maint用戶中,然后在mysql語句中輸入如下語句
alter user 'root'@'localhost' identified with caching_sha2_password by '123456'; # 然后退出即可然后自己看下面的教程吧,你們自己看參考教程吧
mysql配置參考教程
安裝好后,在終端中創建數據庫
# 第一步 登錄mysql數據庫 mysql -uroot -p123456 # 第二步 查看數據庫 show databases; # 第三步 創建自己的數據庫,我要創建數據庫名為dailyfresh_version1 create dailyfresh 數據庫名 # create dailyfresh dailyfresh_version12.2.5 數據庫配置,筆者在linux新建mysql數據庫,數據庫名為dailyfresh_version1,用戶名root,端口號:3306 密碼:123456 虛擬機IP端口號:192.168.23.150
首先打開dailyfresh,然后找到setting,然后配置下列信息:
DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql', #使用mysql數據庫'NAME': 'dailyfresh_version1','USER': 'root','PASSWORD': '123456','HOST': '192.168.23.150', #連接Ubunut1'PORT': '3306',} }然后順帶把時區和地區配置一下,把下面兩個參數改變
LANGUAGE_CODE = 'zh-hans'TIME_ZONE = 'Asia/Shanghai'2.2.6 新建靜態目錄,用于存放一些css和js配置,我們這里將工程目錄下的直接復制過來即可,然后我們需要在setting中做如下配置
# 靜態文件路徑配置 STATIC_URL = '/static/' STATICFILES_DIRS=[os.path.join(BASE_DIR,'static')]2.2.7 然后在settings.py同級目錄下的url中添加如下指令
urlpatterns = [path('admin/', admin.site.urls),path('tinymce/',include(('tinymce.urls','tinymce'))), #富文本編輯器path('user/',include(('user.urls','user'),namespace='user')), #用戶模塊path('cart/',include(('cart.urls','cart'),namespace='cart')), #購物車模塊path('order/',include(('order.urls','order'),namespace='order')), #訂單模塊path('',include(('goods.urls','goods'),namespace='goods')), #商品模塊 ]2.2.8 然后我們把urls.py到apps下的每個應用(order、user、cart、goods)中拷貝一份,我們先拷貝一份,然后我們需要刪掉一些東西,后面做項目的時候邊做邊加,空目錄如下:
from django.conf.urls import url urlpatterns = []然后把包含這個內容的urls.py文件拷貝到各個應用中。
2.2.9 新建一個python包,命名為db,然后在其目錄下新建一個python文件base_model.py,并在里頭輸入如下內容:
from django.db import modelsclass BaseModel(models.Model):"""模型抽象基類,為所有繼承此基類的類加入如下三個字段"""create_time = models.DateTimeField(auto_now_add=True, verbose_name='創建時間')update_time = models.DateTimeField(auto_now=True, verbose_name='更新時間')is_delete = models.BooleanField(default=False, verbose_name='是否刪除')class Meta:"""說明是個抽象模型類"""abstract = True2.2.10 為各應用模型類加入如下內容
1、user中的models.py
from django.db import models from django.contrib.auth.models import AbstractUser # 用戶驗證類 from db.base_model import BaseModel# Create your models here.class User(AbstractUser, BaseModel):"""用戶模型類"""class Meta:db_table = 'df_user'verbose_name = '用戶'verbose_name_plural = verbose_nameclass Address(BaseModel):"""地址模型類"""user = models.ForeignKey('User', verbose_name='所屬賬戶', on_delete=models.CASCADE) # 刪除user則對應的地址都會被刪除receiver = models.CharField(max_length=20, verbose_name='收件人')addr = models.CharField(max_length=256, verbose_name='收件地址')zip_code = models.CharField(max_length=6, null=True, verbose_name='郵政編碼')phone = models.CharField(max_length=11, verbose_name='聯系電話')is_default = models.BooleanField(default=False, verbose_name='是否默認')class Meta:db_table = 'df_address'verbose_name = '地址'verbose_name_plural = verbose_name2、goods中的models.py
from django.db import models from db.base_model import BaseModel from tinymce.models import HTMLField# Create your models here.class GoodsType(BaseModel):"""商品類型模型類"""name = models.CharField(max_length=20, verbose_name='種類名稱')logo = models.CharField(max_length=20, verbose_name='標識')image = models.ImageField(upload_to='type', verbose_name='商品類型圖片')class Meta:db_table = 'df_goods_type'verbose_name = '商品種類'verbose_name_plural = verbose_namedef __str__(self):return self.nameclass GoodsSKU(BaseModel):"""商品SKU模型類"""status_choices = ((0, '下線'),(1, '上線'),)type = models.ForeignKey('GoodsType', verbose_name='商品種類', on_delete=models.CASCADE)goods = models.ForeignKey('Goods', verbose_name='商品SPU', on_delete=models.CASCADE)name = models.CharField(max_length=20, verbose_name='商品名稱')desc = models.CharField(max_length=256, verbose_name='商品簡介')price = models.DecimalField(max_digits=10, decimal_places=2, verbose_name='商品價格')unite = models.CharField(max_length=20, verbose_name='商品單位')image = models.ImageField(upload_to='goods', verbose_name='商品圖片')stock = models.IntegerField(default=1, verbose_name='商品庫存')sales = models.IntegerField(default=0, verbose_name='商品銷量')status = models.SmallIntegerField(default=1, choices=status_choices, verbose_name='商品狀態')class Meta:db_table = 'df_goods_sku'verbose_name = '商品'verbose_name_plural = verbose_name# def __str__(self):# return self.nameclass Goods(BaseModel):"""商品SPU模型類"""name = models.CharField(max_length=20, verbose_name='商品SPU名稱')detail = HTMLField(blank=True, verbose_name='商品詳情')class Meta:db_table = 'df_goods'verbose_name = '商品SPU'verbose_name_plural = verbose_namedef __str__(self):return self.nameclass GoodsImage(BaseModel):"""商品圖片模型類"""sku = models.ForeignKey('GoodsSKU', verbose_name='商品', on_delete=models.DO_NOTHING)image = models.ImageField(upload_to='goods', verbose_name='圖片路徑')class Meta:db_table = 'df_goods_image'verbose_name = '商品圖片'verbose_name_plural = verbose_nameclass IndexGoodsBanner(BaseModel):"""首頁輪播商品展示模型類"""sku = models.ForeignKey('GoodsSKU', verbose_name='商品', on_delete=models.DO_NOTHING)image = models.ImageField(upload_to='banner', verbose_name='圖片')index = models.SmallIntegerField(default=0, verbose_name='展示順序')class Meta:db_table = 'df_index_banner'verbose_name = '首頁輪播商品'verbose_name_plural = verbose_nameclass IndexTypeGoodsBanner(BaseModel):"""首頁分類商品展示模型類"""DISPLAY_TYPE_CHOICES = ((0, "標題"),(1, "圖片"))type = models.ForeignKey('GoodsType', verbose_name='商品類型', on_delete=models.DO_NOTHING)sku = models.ForeignKey('GoodsSKU', verbose_name='商品SKU', on_delete=models.DO_NOTHING)display_type = models.SmallIntegerField(default=1, choices=DISPLAY_TYPE_CHOICES, verbose_name='展示類型')index = models.SmallIntegerField(default=0, verbose_name='展示順序')class Meta:db_table = 'df_index_type_goods'verbose_name = '主頁分類展示商品'verbose_name_plural = verbose_name# def __str__(self):# return self.get_display_type_display()class IndexPromotionBanner(BaseModel):"""首頁促銷活動模型類"""name = models.CharField(max_length=20, verbose_name='活動名稱')url = models.URLField(verbose_name='活動鏈接')image = models.ImageField(upload_to='banner', verbose_name='活動圖片')index = models.SmallIntegerField(default=0, verbose_name='展示順序')class Meta:db_table = 'df_index_promotion'verbose_name = '主頁促銷活動'verbose_name_plural = verbose_name# def __str__(self):# return self.name3、order中的models.py
from django.db import models from db.base_model import BaseModel# Create your models here.class OrderInfo(BaseModel):PAY_METHOD_CHOICES = ((1, '貨到付款'),(2, '微信支付'),(3, '支付寶'),(4, '銀聯支付'))ORDER_STATUS_CHOICES = ((1, '待支付'),(2, '待發貨'),(3, '待收貨'),(4, '待評價'),(5, '已完成'))order_id = models.CharField(max_length=128, primary_key=True, verbose_name='訂單id')user = models.ForeignKey('user.User', verbose_name='用戶', on_delete=models.CASCADE)addr = models.ForeignKey('user.Address', verbose_name='地址', on_delete=models.CASCADE)pay_method = models.SmallIntegerField(choices=PAY_METHOD_CHOICES, default=3, verbose_name='支付方式')total_count = models.IntegerField(default=1, verbose_name='商品數量')total_price = models.DecimalField(max_digits=10, decimal_places=2, verbose_name='商品總價')transit_price = models.DecimalField(max_digits=10, decimal_places=2, verbose_name='訂單運費')order_status = models.SmallIntegerField(choices=ORDER_STATUS_CHOICES, default=1, verbose_name='訂單狀態')trade_no = models.CharField(max_length=128, default='', verbose_name='支付編號')class Meta:db_table = 'df_order_info'verbose_name = "訂單"verbose_name_plural = verbose_nameclass OrderGoods(BaseModel):"""訂單商品模型類"""order = models.ForeignKey('OrderInfo', verbose_name='訂單', on_delete=models.DO_NOTHING)sku = models.ForeignKey('goods.GoodsSKU', verbose_name='商品SKU', on_delete=models.DO_NOTHING)count = models.IntegerField(default=1, verbose_name='商品數目')price = models.DecimalField(max_digits=10, decimal_places=2, verbose_name='商品價格')comment = models.CharField(max_length=256, default='', verbose_name='評論')class Meta:db_table = 'df_order_goods'verbose_name = '訂單商品'verbose_name_plural = verbose_name加了這些后,為了講models.py中的文件遷移到數據庫中,我們可以添加如下內容,到settings中加入
#django認證系統使用的模型類 #作用:生成我們所需的模型類對應的表 AUTH_USER_MODEL='user.User'2.2.11 然后再pycharm中運行python manage.py runserver,不出意外,此時定會報錯,因為還未進行數據庫遷移,此時我們需要python manag.py migrate,不出意外,又會出現報錯,因為虛擬機下的數據庫并未給其授權,此時我們需要做如下配置
Django的mysql的遠程登錄關于linux的配置
首先在終端輸入
ifconfig可能沒有安裝ifconfig這個插件,我們運行下面的的命令行
sudo apt install net-tools然后我們需要進入配置文件,把原來的那個地址更改,先運行
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf把里面的
bind address=****改一下,改成ifconfig中顯示的那個
然后使用mysql數據庫做點配置,
use mysql;然后輸入
select host,user from user;然后輸入
update user set host='%' where user='root';然后授權數據庫
flush privileges;參考文檔
然后還出了一個錯,django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.由于pycharm中未安裝與數據庫相關的應用,此時我們需要再數據庫中安裝應用,首先我們在dailyfresh文件下的__init__.py中加入
# 第一步,在__init__.py中添加如下內容 import pymysql pymysql.install_as_MySQLdb() # 第二步,在終端中安裝響應的插件有 pip install pymysql # 第三步,可能需要安裝Pillow python -m pip install Pillow # 第四步,安裝cryptography pip install cryptography # 第五步,在終端執行下面命令 python manage.py makemigrations # 第六步,將文件遷移到數據庫 python manage.py migrate現在遷移數據庫就沒有啥問題了。此時我們把數據庫與pycharm項目連接完成了
天天生鮮項目搭建文件可從公眾號學聚思獲取,關注公眾號:學聚思、學聚思、學聚思。重要的事情說三遍
本文博客獲取關鍵詞:天天生鮮項目框架博客;
本項目關鍵詞:天天生鮮項目框架
請大家按照關鍵字搜索哦,另外,本人創建了1個QQ群歡迎各位加入討論
QQ群號:301666877
天天生鮮項目學習視頻
另外如果需要其他資源,比如視頻中的工程文檔,歡迎公眾號留言
本內容持續更新直至天天生鮮項目完成!
第一章,環境配置與天天生鮮項目框架搭建
總結
以上是生活随笔為你收集整理的第一章、天天生鲜项目框架搭建的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html复选框值改变后事件,javasc
- 下一篇: 老生常谈session,cookie的区