天天生鮮Django(1)


***************************************************************************************************

***********? ? ?* 一.項目框架搭建*************

***************************************************************************************************

1.安裝虛擬環(huán)境,pip install virtualenv? ? ? ? ? ? ? ? pip install virtualenvwrapper-win

? 查看版本號:virtualenv -version

2.創(chuàng)建python3版本的虛擬環(huán)境? ? mkvirtualenv -p "E:\install\python\python3\python3.exe" pyp

? ? ? 在ubuntu中創(chuàng)建不用這么麻煩击敌,直接? mkvirtualenv -p python3 pyp

? ? ? 查看該環(huán)境下安裝了哪些包:pip list? ? ? ? pip freeze

3.進入虛擬環(huán)境:先workon查看有哪些虛擬環(huán)境笙以,進入虛擬環(huán)境workon pyp

4.安裝Django:pip install Django==1.8.2

5.創(chuàng)建項目:django-admin startproject test1

? ? ? ? ? cd test1

6.創(chuàng)建運用:python manage.py startapp book

7.打開pycharm,指定項目的運行環(huán)境募逞,在c盤下的envs/環(huán)境名/scripts/python.exe,然后將運用注冊到setting中去


================================================

要安裝pip install pymysql

pip install Django-tinymce==2.6.0

pip install Pillow

一.項目多的時候,要創(chuàng)建一個apps來進行統(tǒng)一管理:

注冊這些應用有兩種寫法

1.在settings的INSTALLED_APPS中注冊這些應用'apps.user'等馋评。

2.讓項目可以自動識別:

(1)settings中加入import sys? ? ? ?

sys.path.insert(0,os.path.join(BASE_DIR,"apps"))#讓項目可以識別app目錄,sys.path用于動態(tài)的去修改路徑

(2)點擊apps放接,打開Mark Directory as點擊Sources Root,然后在settings的INSTALLED_APPS中注冊這些應用'user'等

二.配置模板目錄:在settings的TEMPLATES中寫'DIRS': [os.path.join(BASE_DIR,"templates")],

================================================================

mysql數(shù)據(jù)庫的配置留特,在setting里面

DATABASES = {

? ? 'default': {

? ? ? ? 'ENGINE': 'django.db.backends.mysql',

? ? ? ? 'NAME': "dailyfresh1807",

? ? ? ? 'USER': "root",

? ? ? ? 'PASSWORD': "root",

? ? ? ? 'HOST': "127.0.0.1",

? ? ? ? 'PORT': "3306",

? ? }

}

============================================

后臺的相關配置纠脾,讓后臺語言為中文簡體

LANGUAGE_CODE = 'zh-hans'

TIME_ZONE = 'Asia/Shanghai'

============================================

配置靜態(tài)文件目錄

STATIC_URL = '/static/'? #配置項目中靜態(tài)文件訪問的路徑

STATICFILES_DIRS = [os.path.join(BASE_DIR,"static")]? ? #配置項目文件中的靜態(tài)文件的存儲位置

============================================

項目中引入應用的urls.py文件,盡量的使用反向解析,幫助我們動態(tài)的生成路徑蜕青,此為一級路由

from django.conf.urls import include, url

from django.contrib import admin

urlpatterns = [

? ? url(r'^admin/', include(admin.site.urls)),

? ? url(r'^tinymce/', include("tinymce.urls")),? ? ? ? ? ? ? ? #富文本編輯器

? ? url(r'^user/', include("user.urls",namespace="user")),? ? ? #用戶模塊

? ? url(r'^cart/', include("cart.urls",namespace="cart")),? ? ? #購物車模塊

? ? url(r'^order/', include("order.urls",namespace="order")),? #訂單模塊

? ? url(r'', include("goods.urls",namespace="goods")),? ? ? ? ? #商品模塊

]

在創(chuàng)建的各個運用里都加入urls.py文件

=======================================================

富文本插件

1.注冊:settings的INSTALLED_APPS中寫入tinymce苟蹈,

2.在setting配置:

TINYMCE_DEFAULT_CONFIG = {

? ? 'theme':'advanced',

? ? 'width': 600,

? ? 'height': 400

}

3.在一級的urls的admin配置的路由下寫入

from django.conf.urls import include, url

from user import views

from user.views import RegisterView,ActiveView,LoginView

url(r'^tinymce/', include("tinymce.urls")),? ? #富文本編輯器

***************************************************************************************************

************************ *二.創(chuàng)建模型類*? ********************

***************************************************************************************************

SPU商品信息集合的最小單位,屬性特性相同的商品就一個SPU

SKU庫存進出計量的最小單位右核,件/盒/托盤等

1.基本模型類

在總項目下新建db/base_model.py

from django.db import models

class BaseModel(models.Model):

? ? create_time = models.DateField(auto_now_add=True,verbose_name="創(chuàng)建時間")

? ? update_time = models.DateField(auto_now_add=True,verbose_name="更新時間")

? ? is_delete= models.BooleanField(default=False,verbose_name="刪除標記")

? ? class Meta:

? ? ? ? #抽象的模型類慧脱,最后不會生成表

? ? ? ? abstract = True

==================================================

2.用戶模型類

在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_name

class Address(BaseModel):

? ? user = models.ForeignKey("User",verbose_name="所屬賬戶")

? ? 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_defult = models.BooleanField(default=False,verbose_name="是否默認")

? ? class Meta:

? ? ? ? db_table = 'df_address'

? ? ? ? verbose_name ="地址"

? ? ? ? verbose_name_plural = verbose_name

====================================================

3.商品模塊的模型類

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="商品類型圖片")

? ? cover_image = models.ImageField(upload_to="type",verbose_name="商品類型封面圖")

? ? class Meta:

? ? ? ? db_table = 'df_goods_type'

? ? ? ? verbose_name = '商品種類'

? ? ? ? verbose_name_plural = verbose_name

? ? def __str__(self):

? ? ? ? return self.name

class Goods(BaseModel):

? ? name = models.CharField(max_length=20,verbose_name="商品spu名稱")

? ? detail = HTMLField(blank=True,verbose_name="商品詳情")

? ? def __str__(self):

? ? ? ? return self.name

? ? class Meta:

? ? ? ? db_table = "df_goods"

? ? ? ? verbose_name = "商品SPU"

? ? ? ? verbose_name_plural = verbose_name

class GoodsImage(BaseModel):

? ? sku = models.ForeignKey("GoodsSKU",verbose_name="商品")

? ? image = models.ImageField(upload_to="goods",verbose_name="圖片路徑")

? ? class Meta:

? ? ? ? db_table = "df_goods_image"

? ? ? ? verbose_name = "商品圖片"

? ? ? ? verbose_name_plural = verbose_name

class GoodsSKU(BaseModel):

? ? status_choices = (

? ? ? ? (0,"上線"),

? ? ? ? (1,"下線"),

? ? )

? ? type = models.ForeignKey("GoodsType",verbose_name="商品種類")

? ? goods = models.ForeignKey("Goods",verbose_name="商品SPU")

? ? 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)")

? ? def __str__(self):

? ? ? ? return self.name

? ? class Meta:

? ? ? ? db_table = "df_goods_sku"

? ? ? ? verbose_name ="商品"

? ? ? ? verbose_name_plural = verbose_name

class IndexGoodsBanner(BaseModel):

? ? sku = models.ForeignKey("GoodsSKU",verbose_name="商品")

? ? image = models.ImageField(upload_to="banner",verbose_name="圖片")

? ? index = models.SmallIntegerField(default=0,verbose_name="展示順序")

? ? def __str__(self):

? ? ? ? return self.sku.name

? ? class Meta:

? ? ? ? db_table = "df_index_banner"

? ? ? ? verbose_name="首頁輪播圖片"

? ? ? ? verbose_name_plural = verbose_name

class IndexTypeGoodBanner(BaseModel):

? ? DISPLAY_TYPE_CHOICES = (

? ? ? ? (0,"標題"),

? ? ? ? (1,"圖片"),

? ? )

? ? type = models.ForeignKey("GoodsType",verbose_name="商品類型")

? ? sku = models.ForeignKey("GoodsSKU",verbose_name="商品SKU")

? ? display_type = models.SmallIntegerField(default=1,choices=DISPLAY_TYPE_CHOICES,verbose_name="商品顯示類型")

? ? index = models.SmallIntegerField(default=0,verbose_name="商品順序")

? ? def __str__(self):

? ? ? ? return self.type.name +"===" +self.sku.name

? ? class Meta:

? ? ? ? db_table="df_index_type_goods"

? ? ? ? verbose_name = "主頁分類展示商品"

? ? ? ? verbose_name_plural = verbose_name

class IndexPromotionBanner(BaseModel):

? ? # 主頁促銷活動

? ? name = models.CharField(max_length=20,verbose_name="活動名稱")

? ? # url = models.URLField(verbose_name="活動鏈接")

? ? url = models.CharField(max_length=256,verbose_name="活動鏈接")

? ? image = models.ImageField(upload_to="banner",verbose_name="活動圖片")

? ? index = models.SmallIntegerField(default=0,verbose_name="展示順序")

? ? def __str__(self):

? ? ? ? return self.name

? ? class Meta:

? ? ? ? db_table = "df_index_promotion"

? ? ? ? verbose_name = "主頁促銷活動"

? ? ? ? verbose_name_plural = verbose_name

========================================================

4.訂單模型類:

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=126,primary_key=True,verbose_name="訂單ID")

? ? user = models.ForeignKey("user.User",verbose_name="用戶")

? ? addr = models.ForeignKey("user.Address",verbose_name="地址")

? ? 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,verbose_name="支付編號")

? ? class Meta:

? ? ? ? db_table = 'df_order_info'

? ? ? ? verbose_name='訂單'

? ? ? ? verbose_name_plural = verbose_name

class OrderGoods(BaseModel):

? ? order = models.ForeignKey("OrderInfo", verbose_name="訂單")

? ? sku = models.ForeignKey("goods.GoodsSKU", verbose_name="商品SKU")

? ? 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

========================================================

5.替換Django默認的認證系統(tǒng)

在setting中加入

#django認證的系統(tǒng)使用的模型類

AUTH_USER_MODEL = "user.User"

==========================================================

6.在總項目的__init__文件下寫入

import pymysql

pymysql.install_as_MySQLdb()

==========================================================

7.進行生成遷移文件和執(zhí)行遷移文件(前提是在數(shù)據(jù)庫中已經將dailyfresh1807數(shù)據(jù)庫建立好了 create databases dailyfresh1807 charset = "utf8";)

python manage.py makemigration

python manage.py migrate

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市贺喝,隨后出現(xiàn)的幾起案子菱鸥,更是在濱河造成了極大的恐慌宗兼,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,681評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件采缚,死亡現(xiàn)場離奇詭異针炉,居然都是意外死亡,警方通過查閱死者的電腦和手機扳抽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,205評論 3 399
  • 文/潘曉璐 我一進店門篡帕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人贸呢,你說我怎么就攤上這事镰烧。” “怎么了楞陷?”我有些...
    開封第一講書人閱讀 169,421評論 0 362
  • 文/不壞的土叔 我叫張陵怔鳖,是天一觀的道長。 經常有香客問我固蛾,道長结执,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,114評論 1 300
  • 正文 為了忘掉前任艾凯,我火速辦了婚禮献幔,結果婚禮上,老公的妹妹穿的比我還像新娘趾诗。我一直安慰自己蜡感,他們只是感情好,可當我...
    茶點故事閱讀 69,116評論 6 398
  • 文/花漫 我一把揭開白布恃泪。 她就那樣靜靜地躺著郑兴,像睡著了一般。 火紅的嫁衣襯著肌膚如雪贝乎。 梳的紋絲不亂的頭發(fā)上情连,一...
    開封第一講書人閱讀 52,713評論 1 312
  • 那天,我揣著相機與錄音览效,去河邊找鬼蒙具。 笑死,一個胖子當著我的面吹牛朽肥,可吹牛的內容都是我干的。 我是一名探鬼主播持钉,決...
    沈念sama閱讀 41,170評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼衡招,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了每强?” 一聲冷哼從身側響起始腾,我...
    開封第一講書人閱讀 40,116評論 0 277
  • 序言:老撾萬榮一對情侶失蹤州刽,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后浪箭,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體穗椅,經...
    沈念sama閱讀 46,651評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,714評論 3 342
  • 正文 我和宋清朗相戀三年奶栖,在試婚紗的時候發(fā)現(xiàn)自己被綠了匹表。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,865評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡宣鄙,死狀恐怖袍镀,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情冻晤,我是刑警寧澤苇羡,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站鼻弧,受9級特大地震影響设江,放射性物質發(fā)生泄漏。R本人自食惡果不足惜攘轩,卻給世界環(huán)境...
    茶點故事閱讀 42,211評論 3 336
  • 文/蒙蒙 一叉存、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧撑刺,春花似錦鹉胖、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,699評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至冕屯,卻和暖如春寂诱,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背安聘。 一陣腳步聲響...
    開封第一講書人閱讀 33,814評論 1 274
  • 我被黑心中介騙來泰國打工痰洒, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人浴韭。 一個月前我還...
    沈念sama閱讀 49,299評論 3 379
  • 正文 我出身青樓丘喻,卻偏偏與公主長得像,于是被迫代替她去往敵國和親念颈。 傳聞我的和親對象是個殘疾皇子泉粉,可洞房花燭夜當晚...
    茶點故事閱讀 45,870評論 2 361

推薦閱讀更多精彩內容

  • 寒假,這9件事,家長不妨讓孩子做嗡靡! 華眾新刊 百家號01-23 19:45 關注 假期的到來跺撼, 給孩子帶來歡樂的時...
    724110b39fbc閱讀 297評論 0 1
  • 反貪小段子: 有一天歉井,一位官員去問萬能的禪師:“我,勤儉節(jié)約哈误,好衣服都舍不得穿哩至,但為什么別人都罵我是個貪官呢?” ...
    一個法師閱讀 3,269評論 12 15
  • 【0122暢所欲言】 來說一說你加入讀書營以來的收獲吧黑滴。 01長見識憨募。認識了很多小伙伴,看到了很多有趣的人生袁辈,有一...
    little禾閱讀 86評論 0 0
  • 一菜谣、葉脈: 由貫穿在葉肉內的維管束和其他有關組織組成的葉內的輸導和支持結構。葉脈通過葉柄與莖內的維管組織相連晚缩。 葉...
    花草姐姐閱讀 8,723評論 0 3
  • yang_e3d8閱讀 164評論 0 0