Django+vue在騰訊雲上搭建前後端分離項目
最近打算用Django+vue搭建一個個人主站,在此記錄一下搭建項目的整個過程。
一 開發環境:
騰訊雲Centos 7
Python 3.7
Django 2.1.7
vue.js 2.9.6
mysql 5.7
二 創建Django項目:
因為我的主站是要放在騰訊雲上來跑的,所以整個項目環境都應該是配在linux上的。
1.在指定路徑來創建Django項目:
命令:django-admin startproject website
2.然後cd 到項目根目錄下來創建一個app:
命令:python manage.py startapp mywebsite
這樣Django項目就創建成功了,當然,還有好多配置沒有配,不急,等我們把vue前端項目也創建完成後一起配
三 創建vue前端項目
下面來創建一個前端項目:
1.在使用vue時需要先安裝node.js:
命令:wget https://nodejs.org/dist/v8.5.0/node-v8.5.0-linux-x64.tar.gz
解壓:
命令:tar zxvf node-v8.5.0-linux-x64.tar.gz
配置node環境變量(將這兩行加到 /etc/profile中):
命令:vim /etc/profile
PATH=$PATH:/usr/local/node-v9.3.0
export PATH
重載使該文件生效:
命令:source /etc/profile
2. 創建vue項目:
cd到Django項目根目錄下:
命令:vue-init webpack myvue
myvue 是前端項目的項目名,必須要和Django的app同級才行:
創建項目時會有許多選項,一路回車+ “Y”即可。
3.安裝依賴包:
cd到vue前端項目myvue中:
安裝依賴包:npm install
4.打包vue項目(將所有東西打包成一個dist文件夾,以後的static和templates都在這裏邊):
在myvue中執行命令: cnpm run build
這樣前端vue項目創建完成:
四 整合Django和Vue
前後端項目都創建完成後我們來進行整合:
在Django項目根目錄下,有一個和項目同名的文件夾website,這個文件夾中有一個settings.py,是用來配置整個Django項目的。
1. 我們當初創建了一個mywebsite的app,現在我們要把他加到Django項目的app中來:
在settings.py中找到 INSTALLED_APPS 加上app名稱。
2. 更改數據庫,Django項目默認使用自帶的sqllit3數據庫,這裏我們要換成mysql,同樣也是在settings.py中操作:
因為我們用的是python3,python3提供操作mysql的庫是pymysql,但是Django默認的是mtsqldb,所以如果只在settings中更改數據庫,到時候項目會報錯.
還要改這裏:在和Django項目同名的文件夾下有一個__init__.py,在這個文件中加上這麽兩句:
import pymysql
pymysql.install_as_MySQLdb()
就OK了:
3.更改模板templates位置: 在紅框位置天前端項目的dist文件夾路徑
4. 更改static靜態文件路徑: 在settings中添加這個:指向靜態文件static文件夾
5. 配置urls:
在Django項目同名文件夾下有一個urls.py 這裏邊是整個Django項目的路由設置。
還記得在前端vue項目的dist文件夾下有一個index.html 嗎?這個html就是vue項目的主界面,
現在我們在urls中添加這麽一句: path(‘‘, TemplateView.as_view(template_name="index.html")),
這表示當我們啟動項目後在ip+端口後什麽都不寫時,就會跳轉到這個vue主界面中來:
按理來說,所有的路由轉發都可以在這個urls.py中完成,但是如果你的項目有許多app,路由也會變得很多,到時候有可能會搞混,所以正確的做法是在每個app下都創建一個urls.py,每個app的路由都寫在自己的app下,
這樣一來,Django項目同名的文件夾下的urls.py就是一級路由,app下的才是二級路由,一級路由只需要向二級路由做轉發就好了。
到這裏,利用Django+Vue搭建個人站點的項目創建過程就結束了。
Django+vue在騰訊雲上搭建前後端分離項目