日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

第一章、天天生鲜项目框架搭建

發(fā)布時間:2023/12/10 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第一章、天天生鲜项目框架搭建 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

天天生鮮項目搭建指南

一、環(huán)境搭建指南


1、首先下載依賴環(huán)境

python版本
Django版本
mysql版本

2、環(huán)境搭建

2.1、首先創(chuàng)建文件夾,

本人在Windows電腦F盤創(chuàng)建文件夾Django,并在里面創(chuàng)建子目錄dailyfresh_version,運行電腦終端Windows PowerShell,首先按照下面順序進(jìn)行配置:

# 第一步,對PowerShell的一種配置 Set-ExecutionPolicy Unrestricted # 第二步,安裝Django所需的虛擬環(huán)境 pip install virtualenv # 第三步,進(jìn)入當(dāng)前用戶名 cd F:\Django\dailyfresh_version # 第四步,在打開的文件佳下面下載Django項目所依賴的東西 virtualenv . # 第五步,進(jìn)入文件夾下的虛擬環(huán)境,使用下列指令切換, .\Scripts\activate #ps:如果你想取消虛擬環(huán)境,運行deactivate # 第六步,安裝django pip install django #ps:如果你需要安裝制定版本,運行pip install django==版本號 # 第七步,創(chuàng)建項目名,我的項目名為dailyfresh django-admin startproject 項目名 #django-admin startproject dailyfresh # 第八步,進(jìn)入項目 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中添加該應(yīng)用 INSTALLED_APPS = [#第三方插件應(yīng)用'tinymce', #富文本編輯器#系統(tǒng)自帶應(yīng)用'django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles', ] # 第三步 在setting中繼續(xù)配置富文本編輯器 #富文本編輯器配置 TINYMCE_DEFAULT_CONFIG = {'theme': 'advanced','width': 600,'height': 400, } # 第四步 在setting的同級目錄下的url.py中添加如下 from django.urls import path,include # 導(dǎo)入兩個包# 添加如此指令 urlpatterns = [path('admin/', admin.site.urls),path('tinymce/',include(('tinymce.urls','tinymce'))), #富文本編輯器]

富文本編輯器與模型類有關(guān),富文本編輯器應(yīng)該查看模型類。

2.2.2 天天生鮮主要包含購物車、貨物、用戶、還有主頁幾個功能框,因此我們需要創(chuàng)建這幾個app,首先運行如下指令創(chuàng)建

# 第一步,創(chuàng)建四個應(yīng)用 python manage.py startapp user python manage.py startapp goods python manage.py startapp cart python manage.py startapp order

然后我們新建一個目錄來存放這幾個應(yīng)用,并把這些應(yīng)用放在里頭,然后需要去settings中配置應(yīng)用,本來要寫路徑,就是這樣寫apps.user,但是會很麻煩,所以我們打算直接寫user、order等等,那我們可以做如下配置

# 第一步,在setting中指定絕對路徑 import os import sys # 調(diào)用里面的path路徑 # BASE_DIR 項目在哪,絕對路徑就在哪? sys.path.insert(0,os.path.join(BASE_DIR,'apps')) # 項目的絕對路徑# 第二步,添加各模塊應(yīng)用 INSTALLED_APPS = [#自定義應(yīng)用'user', #用戶模塊'goods', #商品模塊'cart', #購物車模塊'order', #訂單模塊#第三方插件應(yīng)用'tinymce', #富文本編輯器#系統(tǒng)自帶應(yīng)用'django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles', ]

2.2.3 添加一個空目錄templates,用于存放靜態(tài)文件,然后在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 創(chuàng)建數(shù)據(jù)庫,打開linux,安裝mysql,我的是在Ubuntu20.4安裝的,下面提供mysql的安裝教程,

如何在Ubuntu上安裝mysql

1、更新鏡像源,前面安裝時已經(jīng)配置了,如果沒有配置對著下面的參考指南看下

2、下載安裝mysql

sudo apt-get install mysql-server # 第一步 sudo apt-get install mysql-client # 第二步 sudo apt-get install libmysqlclient-dev # 第三步

3、下載數(shù)據(jù)庫之后沒有密碼,故我們根據(jù)如下配置

mysql -u root -p # 第一步

找到mysql的根目錄:可根據(jù)如下流程

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獲得的賬號密碼(倒數(shù)第一是密碼,倒數(shù)第二是賬號)

mysql -u debian-sys-maint -p

輸入密碼

然后退回MySQL,退回主界面再次進(jìn)入mysql更改密碼,如果無法進(jìn)入,就用管理員身份進(jìn)入

進(jìn)入mysql后,執(zhí)行下面的更改秘密啊

alter user 'root'@'localhost' identified by '123456'

然后退回主界面,輸入

mysql -u root -p # EnterPassword: 輸入自己設(shè)置的密碼

發(fā)現(xiàn)還是無法進(jìn)入,然后用管理員模式,也就是前面加個sudo,發(fā)現(xiàn)可以進(jìn)入。所以我們還需要最后設(shè)置一步,我們最后一次進(jìn)入debian-sys-maint用戶中,然后在mysql語句中輸入如下語句

alter user 'root'@'localhost' identified with caching_sha2_password by '123456'; # 然后退出即可

然后自己看下面的教程吧,你們自己看參考教程吧

mysql配置參考教程

安裝好后,在終端中創(chuàng)建數(shù)據(jù)庫

# 第一步 登錄mysql數(shù)據(jù)庫 mysql -uroot -p123456 # 第二步 查看數(shù)據(jù)庫 show databases; # 第三步 創(chuàng)建自己的數(shù)據(jù)庫,我要創(chuàng)建數(shù)據(jù)庫名為dailyfresh_version1 create dailyfresh 數(shù)據(jù)庫名 # create dailyfresh dailyfresh_version1

2.2.5 數(shù)據(jù)庫配置,筆者在linux新建mysql數(shù)據(jù)庫,數(shù)據(jù)庫名為dailyfresh_version1,用戶名root,端口號:3306 密碼:123456 虛擬機IP端口號:192.168.23.150

首先打開dailyfresh,然后找到setting,然后配置下列信息:

DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql', #使用mysql數(shù)據(jù)庫'NAME': 'dailyfresh_version1','USER': 'root','PASSWORD': '123456','HOST': '192.168.23.150', #連接Ubunut1'PORT': '3306',} }

然后順帶把時區(qū)和地區(qū)配置一下,把下面兩個參數(shù)改變

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

2.2.6 新建靜態(tài)目錄,用于存放一些css和js配置,我們這里將工程目錄下的直接復(fù)制過來即可,然后我們需要在setting中做如下配置

# 靜態(tài)文件路徑配置 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下的每個應(yīng)用(order、user、cart、goods)中拷貝一份,我們先拷貝一份,然后我們需要刪掉一些東西,后面做項目的時候邊做邊加,空目錄如下:

from django.conf.urls import url urlpatterns = []

然后把包含這個內(nèi)容的urls.py文件拷貝到各個應(yīng)用中。

2.2.9 新建一個python包,命名為db,然后在其目錄下新建一個python文件base_model.py,并在里頭輸入如下內(nèi)容:

from django.db import modelsclass BaseModel(models.Model):"""模型抽象基類,為所有繼承此基類的類加入如下三個字段"""create_time = models.DateTimeField(auto_now_add=True, verbose_name='創(chuàng)建時間')update_time = models.DateTimeField(auto_now=True, verbose_name='更新時間')is_delete = models.BooleanField(default=False, verbose_name='是否刪除')class Meta:"""說明是個抽象模型類"""abstract = True

2.2.10 為各應(yīng)用模型類加入如下內(nèi)容

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則對應(yīng)的地址都會被刪除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='聯(lián)系電話')is_default = models.BooleanField(default=False, verbose_name='是否默認(rèn)')class Meta:db_table = 'df_address'verbose_name = '地址'verbose_name_plural = verbose_name

2、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='標(biāo)識')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='商品狀態(tài)')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, "標(biāo)題"),(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.name

3、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, '銀聯(lián)支付'))ORDER_STATUS_CHOICES = ((1, '待支付'),(2, '待發(fā)貨'),(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='商品數(shù)量')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='訂單狀態(tài)')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='商品數(shù)目')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中的文件遷移到數(shù)據(jù)庫中,我們可以添加如下內(nèi)容,到settings中加入

#django認(rèn)證系統(tǒng)使用的模型類 #作用:生成我們所需的模型類對應(yīng)的表 AUTH_USER_MODEL='user.User'

2.2.11 然后再pycharm中運行python manage.py runserver,不出意外,此時定會報錯,因為還未進(jìn)行數(shù)據(jù)庫遷移,此時我們需要python manag.py migrate,不出意外,又會出現(xiàn)報錯,因為虛擬機下的數(shù)據(jù)庫并未給其授權(quán),此時我們需要做如下配置

Django的mysql的遠(yuǎn)程登錄關(guān)于linux的配置

首先在終端輸入

ifconfig

可能沒有安裝ifconfig這個插件,我們運行下面的的命令行

sudo apt install net-tools

然后我們需要進(jìn)入配置文件,把原來的那個地址更改,先運行

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

把里面的

bind address=****改一下,改成ifconfig中顯示的那個

然后使用mysql數(shù)據(jù)庫做點配置,

use mysql;

然后輸入

select host,user from user;

然后輸入

update user set host='%' where user='root';

然后授權(quán)數(shù)據(jù)庫

flush privileges;

參考文檔

然后還出了一個錯,django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.由于pycharm中未安裝與數(shù)據(jù)庫相關(guān)的應(yīng)用,此時我們需要再數(shù)據(jù)庫中安裝應(yīng)用,首先我們在dailyfresh文件下的__init__.py中加入

# 第一步,在__init__.py中添加如下內(nèi)容 import pymysql pymysql.install_as_MySQLdb() # 第二步,在終端中安裝響應(yīng)的插件有 pip install pymysql # 第三步,可能需要安裝Pillow python -m pip install Pillow # 第四步,安裝cryptography pip install cryptography # 第五步,在終端執(zhí)行下面命令 python manage.py makemigrations # 第六步,將文件遷移到數(shù)據(jù)庫 python manage.py migrate

現(xiàn)在遷移數(shù)據(jù)庫就沒有啥問題了。此時我們把數(shù)據(jù)庫與pycharm項目連接完成了

天天生鮮項目搭建文件可從公眾號學(xué)聚思獲取,關(guān)注公眾號:學(xué)聚思、學(xué)聚思、學(xué)聚思。重要的事情說三遍

本文博客獲取關(guān)鍵詞:天天生鮮項目框架博客;

本項目關(guān)鍵詞:天天生鮮項目框架

請大家按照關(guān)鍵字搜索哦,另外,本人創(chuàng)建了1個QQ群歡迎各位加入討論

QQ群號:301666877

天天生鮮項目學(xué)習(xí)視頻

另外如果需要其他資源,比如視頻中的工程文檔,歡迎公眾號留言

本內(nèi)容持續(xù)更新直至天天生鮮項目完成!


第一章,環(huán)境配置與天天生鮮項目框架搭建

總結(jié)

以上是生活随笔為你收集整理的第一章、天天生鲜项目框架搭建的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。