djang vue 搭建一體化前後端分離專案

2021-08-23 14:11:23 字數 3747 閱讀 7793

4. 前後端的結合

專案實現資料的收錄以及統計,pdf的生成。以及新聞的展示。

專案採用語言為python3.6,django==2.0.5,djangorestframework==3.8.2。所用第三方包如下

本專案用pycharm新建乙個django專案,安裝所需包之後,除自己所需的專案檔案之外,專案目錄如圖所示:

本機需安裝node.js>=10.4.1 npm>=6.1,所需安裝教程,自行搜尋。

3.1 使用vue-cli建立乙個vuejs專案作為專案前端

進入專案檔案輸出命令

vue-init webpack frontend
專案分為兩大模組,

4.1 前端構建

將前後端需求完成後首先進入前端:

cd frontend

npm install

npm run build

構建完成會生成乙個 資料夾名字叫dist,裡面有乙個 index.html 和乙個 資料夾static 。

4.2 使用django的通用檢視templateview

找到專案根 urls.py (即ulb_manager/urls.py),使用通用檢視建立最簡單的模板控制器,訪問 『/』時直接返回 index.html

urlpatterns = [

# path(r'^', include(rounter.urls)),

path('', templateview.as_view(template_name='index.html')),

path('admin/', admin.site.urls),]

urlpatterns += static(settings.media_url, document_root=settings.media_root)

4.3 配置django專案的模板搜尋路徑

在settings裡面設定django找到vue專案裡的index.html,找到templates配置項,修改如下:

templates = [,},

]

注意這裡的 frontend 是vuejs專案目錄,dist則是執行 npm run build 構建出的index.html與靜態資料夾 static 的父級目錄

這時啟動django專案,訪問 / 則可以訪問index.html,但是還有問題,靜態檔案都是404錯誤,下一步我們解決這個問題

4.4 配置靜態檔案搜尋路徑

static_url = '/static/'

staticfiles_dirs = [

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

]static_root = os.path.join(base_dir, 'static')

media_url = '/media/'

media_root = os.path.join(base_dir, 'media')

這樣django不僅可以將/ulb 對映到index.html,而且還可以順利找到靜態檔案

此時訪問 /ulb 我們可以看到使用django作為後端的vuejs helloworld

4.5 開發環境

每次部署需要將vue編譯即

npm run build
單獨執行vue專案時,需解決django的跨域問題,有兩種方法解決,一種是在vuejs層上做**(proxytable),另一種是在django層注入header,這裡我使用後者,用django的第三方包 django-cors-headers 來解決跨域問題

安裝pip install django-cors-headers

配置(兩步)

settings.py 修改

middleware = [

'django.middleware.security.securitymiddleware',

'django.contrib.sessions.middleware.sessionmiddleware',

'corsheaders.middleware.corsmiddleware',

'django.middleware.common.commonmiddleware',

'django.middleware.csrf.csrfviewmiddleware',

'django.contrib.auth.middleware.authenticationmiddleware',

'django.contrib.messages.middleware.messagemiddleware',

'django.middleware.clickjacking.xframeoptionsmiddleware',

]

這裡要注意中介軟體載入順序,列表是有序的哦

settings.py 新增

cors_origin_allow_all = true

至此開發環境已經完成。

前向一體化 後向一體化 縱向一體化的含義

前向一體化就是企業通過收購或兼併若干商業企業,或者擁有和控制其分銷系統,實行產銷一體化。前向一體化是指獲得分銷商或零售商的所有權或加強對它們的控制,也就是指企業根據市場的需要和生產技術的可能條件,利用自己的優勢,把成品進行深加工的戰略。在生產過程中,物流從順方向移動,稱為前向一體化,採用這種戰略,是...

企業如何搭建一體化資料整合平台?

近幾十年來,科學技術的迅猛發展和資訊化的推進,使得人類社會所積累的資料量已超過過去五千年的總和,資料的採集 儲存 處理和傳播的數量也與日俱增。實現資料傳遞 資料共享,可以讓更多已有的資料得到充分利用,減少各種手段的重複錄入勞動,提高效率,降低相應的費用。但在實現資料共享過程中,由於資料提供途徑 資料...

狀態列一體化

效果圖方法實現 1新增布局屬性 首先要在布局檔案中加入下面兩個屬性 android cliptopadding true android fitssystemwindows true 解釋一下上面兩個布局屬性的意思 android cliptopadding 定義布局間是否有間距 android f...