Python3—創(chuàng)建Django項目

1糯耍、先要下載安裝Django包

PIP install?Django

2、利用命令行創(chuàng)建Django項目jswf

django-admin startproject mysite

創(chuàng)建成功后目錄如下

.

├── manage.py

└──mysite

? ?├── __init__.py

? ?├── settings.py

? ?├── urls.py

? ?└── wsgi.py

3、在jswf目錄下創(chuàng)建后臺應(yīng)用項目作為項目后端

cd mysite

python manage.py startapp backend?

創(chuàng)建成功后目錄如下

.

├── backend

│ ? ├── __init__.py

│ ? ├── admin.py

│ ? ├── migrations

│ ? │ ? └── __init__.py

│ ? ├── models.py

│ ? ├── tests.py

│ ? └── views.py

├── manage.py

└── mysite?

? ?├── __init__.py

? ?├── settings.py

? ?├── urls.py

? ?└── wsgi.py


4撇他、配置Django項目的數(shù)據(jù)庫:

django中默認(rèn)的數(shù)據(jù)庫為sqlite3逛裤,即新建項目后配置文件(settings.py)中關(guān)于數(shù)據(jù)庫的初始配置如下:

DATABASES = {

? ? 'default': {

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

? ? ? ? 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),

? ? }

}

在django中將配置改為:

DATABASES = {

? ? 'default': {

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

? ? ? ? 'NAME': 'mall',

? ? ? ? 'USER': 'rinka',

? ? ? ? 'PASSWORD': 'rinka0414',

? ? ? ? 'HOST': 'localhost',

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

? ? }

}

其中:

DATABASE_ENGINE即為“背景”中所提到的那些數(shù)據(jù)庫服務(wù)器

DATABASE_NAME將數(shù)據(jù)庫名稱告知 django

DATABASE_USER告訴 django 用哪個用戶連接數(shù)據(jù)庫

DATABASE_PASSWORD?告訴django連接用戶的密碼

DATABASE_HOST告訴 django 連接哪一臺主機的數(shù)據(jù)庫服務(wù)器

DATABASE_PORT告訴 django 連接數(shù)據(jù)庫時使用哪個端口

如果使用的是自己的數(shù)據(jù)庫,比如MySQL启涯,最重要的一步贬堵,記得在項目同名文件夾下的__init.py__中,加入:

?import pymysql

?pymysql.install_as_MySQLdb()

其中pymysql包同樣先使用PIP下載安裝结洼。

pip install pymysql

如果沒有導(dǎo)入pip install pymysql包會報錯:

django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named'MySQLdb'

5黎做、使用vue-cli在根目錄創(chuàng)建一個名稱叫【frontend】的Vue.js項目作為項目前端

vue-init webpack frontend

創(chuàng)建成功后目錄如下

.

├── backend

│ ? ├── __init__.py

│ ? ├── admin.py

│ ? ├── migrations

│ ? │ ? └── __init__.py

│ ? ├── models.py

│ ? ├── tests.py

│ ? └── views.py

├── frontend

│ ? ├── README.md

│ ? ├── build

│ ? │ ? └── ....

│ ? ├── config

│ ? │ ? ├── dev.env.js

│ ? │ ? ├── index.js

│ ? │ ? ├── prod.env.js

│ ? │ ? └── test.env.js

│ ? ├── index.html

│ ? ├── package.json

│ ? ├── src

│ ? │ ? ├── App.vue

│ ? │ ? ├── assets

│ ? │ ? │ ? └── logo.png

│ ? │ ? ├── components

│ ? │ ? │ ? └── HelloWorld.vue

│ ? │ ? └── main.js

│ ? ├── static

│ ? └── test

│ ? ? ? └── ...

├── manage.py

└── mysite?

? ?├── __init__.py

? ?├── settings.py

? ?├── urls.py

? ?└── wsgi.py

我們可以在vue中加入一些常用組件,如element-ui等松忍,再隨便添加倆個例子

frontend/src/HelloWorld.vue文件

<template>

? <div class="hello">

? ? <h1>{{ msg }}</h1>

? ? <h2>Essential Links</h2>

? ? <el-select v-model="value" placeholder="請選擇">

? ? <el-option

? ? ? v-for="item in options"

? ? ? :key="item.value"

? ? ? :label="item.label"

? ? ? :value="item.value">

? ? </el-option>

? </el-select>

? <el-row>

? ? <el-button>默認(rèn)按鈕</el-button>

? ? <el-button type="primary">主要按鈕</el-button>

? ? <el-button type="success">成功按鈕</el-button>

? ? <el-button type="info">信息按鈕</el-button>

? ? <el-button type="warning">警告按鈕</el-button>

? ? <el-button type="danger">危險按鈕</el-button>

? </el-row>

? </div>

</template>

6蒸殿,使用 webpack 打包vue項目

cd frontend

npm install

npm run build

此時直接運行npm run dev也可以直接查看前端 vue界面

構(gòu)建完成會生成一個文件夾,名字叫dist,里面有一個 index.html 和一個 文件夾static宏所。

7酥艳, 使用Django的通用視圖 TemplateView修改靜態(tài)指向路徑(就是讓Django訪問目錄指向我們剛才打包的dist/index.html)

找到項目根 ulb_manager/urls.py文件作出如下修改

fromdjango.contribimport adminfromdjango.urlsimport pathfromdjango.views.generic.baseimportTemplateView //注意加上這句

urlpatterns = [

? ? # path('admin/', admin.site.urls),path('admin/', admin.site.urls),

? ? path(r'', TemplateView.as_view(template_name="index.html")),

]


?8、配置Django項目的模板搜索路徑和靜態(tài)文件搜索路徑 找到根目錄下 ulb_manager/settings.py文件并打開楣铁,找到TEMPLATES配置項玖雁,修改如下:

TEMPLATES = [

? ? {

? ? ? ? 'BACKEND':'django.template.backends.django.DjangoTemplates',

? ? ? ? # 'DIRS': [],'DIRS':['frontend/dist'],

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

? ? ? ? ? ? ],

? ? ? ? },

? ? },

]# Add for vue.jsSTATICFILES_DIRS = [

? ? os.path.join(BASE_DIR, "frontend/dist/static"),

]


9、到此基本就配置完成了盖腕,運行命令就可以直接查看效果

python manage.py runserver



記錄一些踩過的坑

1赫冬、django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.

如果你的Django是最新的2.2,PyMySQL也是最新的0.93的話,你會發(fā)現(xiàn)Django會報錯:

django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.

這個是Django對MySQLdb版本的限制溃列,我們使用的是PyMySQL劲厌,所以不用管它

在Python安裝路徑下的Python36-32\Lib\site-packages\django\db\backends\mysql\base.py文件下,注釋下面語句

if version < (1,3,3):

????raise ImproperlyConfigured("mysqlclient 1.3.3 or newer is required; you have %s"% Database.__version__)

這樣就可以順利運行了听隐。

2补鼻、AttributeError: ‘str‘ object has no attribute ‘decode‘

緊接著上一個錯誤,出現(xiàn)了AttributeError: ‘str‘ object has no attribute ‘decode‘雅任,發(fā)現(xiàn)是對字符串進(jìn)行了decode解碼操作:(一般對字符串進(jìn)行編碼风范,二進(jìn)制進(jìn)行解碼)

其實也是python3的問題,我們用了pymysql沪么,所以也可以不管他

在Python安裝路徑下的Python36-32\Lib\site-packages\django\db\backends\base\mysql\operations.py147行

query = query.decode(errors='replace')

改為

query = query.encode(errors='replace')

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末硼婿,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子禽车,更是在濱河造成了極大的恐慌寇漫,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件殉摔,死亡現(xiàn)場離奇詭異州胳,居然都是意外死亡,警方通過查閱死者的電腦和手機逸月,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進(jìn)店門栓撞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人碗硬,你說我怎么就攤上這事腐缤。” “怎么了肛响?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長惜索。 經(jīng)常有香客問我特笋,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任猎物,我火速辦了婚禮虎囚,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蔫磨。我一直安慰自己淘讥,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布堤如。 她就那樣靜靜地躺著蒲列,像睡著了一般。 火紅的嫁衣襯著肌膚如雪搀罢。 梳的紋絲不亂的頭發(fā)上蝗岖,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天,我揣著相機與錄音榔至,去河邊找鬼抵赢。 笑死,一個胖子當(dāng)著我的面吹牛唧取,可吹牛的內(nèi)容都是我干的铅鲤。 我是一名探鬼主播,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼枫弟,長吁一口氣:“原來是場噩夢啊……” “哼邢享!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起媒区,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤驼仪,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后袜漩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體绪爸,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年宙攻,在試婚紗的時候發(fā)現(xiàn)自己被綠了奠货。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡座掘,死狀恐怖递惋,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情溢陪,我是刑警寧澤萍虽,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站形真,受9級特大地震影響杉编,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一邓馒、第九天 我趴在偏房一處隱蔽的房頂上張望嘶朱。 院中可真熱鬧,春花似錦光酣、人聲如沸疏遏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽财异。三九已至,卻和暖如春缤言,著一層夾襖步出監(jiān)牢的瞬間宝当,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工胆萧, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留庆揩,地道東北人。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓跌穗,卻偏偏與公主長得像订晌,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子蚌吸,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內(nèi)容