<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
1.建立django骨架專案
django-admin startproject yiyan_webauto
2.建立應用
python manage.py startapp myapp
3.試著啟動專案,驗證環境OK
python3 manage.py runserver
4.基礎設定
admin.py
把資料庫的具體表註冊到後臺來便於管理,改一次後再也不用動
from django.contrib import admin # Register your models here. import inspect,sys from myapp.models import * cls_members = inspect.getmembers(sys.modules[__name__],inspect.isclass) for name,cls in cls_members: admin.site.register(cls)
settings.py
專案全域性設定,初始化設定
**ALLOWED_HOSTS = [‘*’] **
白名單,設定到這裡的主機可以存取該服務,*代表所有主機都可以存取我們的django服務
INSTALLED_APPS 應用列表增加自己建立的應用
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'myapp', ]
MIDDLEWARE 中介軟體列表,新增cors中介軟體,解決跨域問題
pip install django-cors-headers
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', ] CORS_ORIGIN_ALLOW_ALL = True #加上允許所有跨域
國際化Internationalization
LANGUAGE_CODE = 'zh-hans' TIME_ZONE = 'Asia/shanghai'
前後端分離,因為一個人開發,為了方便維護,前端專案直接放在django專案下
1.安裝vue-cli
npm install -g @vue/cli@3.12.1
2.建立前端專案
cd django專案的根目錄,vue create 專案名
vue create front
以下報錯是因為當前目錄沒有找到package.json ,cd到前端專案根目錄front再執行即可
found 23 vulnerabilities (2 low, 16 moderate, 5 high)
run `npm audit fix` to fix them, or `npm audit` for details
D:myprojectyiyan_webauto
$ npm audit fix
npm ERR! code EAUDITNOPJSON
npm ERR! audit No package.json found: Cannot audit a project without a package.jsonnpm ERR! A complete log of this run can be found in:
npm ERR! D:Program Filesnodejsnode_cache_logs2022-03-01T04_21_12_141Z-debug.logD:myprojectyiyan_webauto
$ npm audit
npm ERR! code EAUDITNOPJSON
npm ERR! audit No package.json found: Cannot audit a project without a package.jsonnpm ERR! A complete log of this run can be found in:
npm ERR! D:Program Filesnodejsnode_cache_logs2022-03-01T04_21_18_162Z-debug.log
3.建立時候選什麼
- ? Please pick a preset: 選第二個:自定義生成vue專案。
default (babel, eslint)
❯ Manually select features
- ? Check the features needed for your project: (Press <space> to select, <a> to toggle all, <i> to invert selection) 選擇一些外掛.
選擇bable和router
- Use history mode for router? (Requires proper server setup for index fallback in production) (Y/n) 選n。
- ? Where do you prefer placing config for Babel, PostCSS, ESLint, etc.?
選package.json
- Save this as a preset for future projects? (y/N) 儲存成預設設定
選y,下次建立的時候在第一步會多出這個預設設定的選項,回車直接按照預設設定建立專案,選n,每次建立都會一步步選一遍
front dist 打包生成目錄 static 來自public/static,static是專案建立後手工建立的資料夾 css 手工建立 app.xxx.css 來自/src/App.vue裡面的style標籤的內容 js about.xxx.js /src/views/About.vue被webpack打包後的js檔案 about.xxx.js.map webpack打包資訊 app.xxx.js /src/views/Home.vue被webpack打包後的js檔案 app.xxx.js.map webpack打包資訊 chunk-vendors.xxx.js chunk-vendors.xxx.js.map node_modules vue框架需要的依賴包 public 靜態資源,這裡有一個index.html 模板,作為合成最終dist/index.html的骨架存在 src assets 存放一些靜態檔案,現在我們不用這個,之後全部存到public/static下 components 小型元件存放位置 HelloWorld.vue 子元件 views 大型元件,母體元件存放位置 About.vue 母元件 Home.vue 母元件,裡面引入了子元件HelloWorld.vue,所以在存取Home頁面的時候會看到HelloWorld頁面的內容 App.vue 作為所有的.vue的一個主管存在,存放uri(/和/about),裡面的樣式會影響全域性(id=app的div) main.js : 作為打包過程必要的主指令碼,負責把id=app的div進行填充,裡面的程式碼會影響全域性 router.js: 路由管理器,根據path(App.vue裡面的uri)對映具體頁面(component:Home),Home就是views資料夾裡面的vue母元件Home.vue vue.config.js
main.js
import Vue from 'vue' import App from './App.vue' # 引入App.vue,取名為App import router from './router' Vue.config.productionTip = false # 把App.vue填充到public/index.html的id=app的div裡面 new Vue({ router, render: h => h(App) }).$mount('#app')
頁面上呈現的內容是怎麼來的?這裡只說明vue部分
0 dist是從public複製來的,裡面的index有個id=app
1 main.js負責把App.vue掛載到index頁面id=app的div裡面
2 App.vue裡面有<router-view/>,路由/在router.js裡對映到Home.vue
3 假如Home裡面又載入了components的子元件,那再找到子元件
4 最終看到頁面上呈現的內容
public底下手動建立static ,用來存放js/css/圖片等資源,讓vue打包的時候會把靜態檔案統一存到這裡,然後讓django的靜態檔案從這裡取,怎麼實現說讓vue打包的時候在dist生成static資料夾,在front目錄下建立檔案vue.config.js,內容為:
module.exports = { assetsDir:'static' }
這裡需要特別特別說明:舊版本會有vue.config.js,新版本已經沒有了
dist vue打包生成的包,django要從dist裡面拿到index.html和static的所有靜態資源,實際上django就是跟dist裡面的index.js互動,而不會管沒vue專案的其他內容,
vue專案就沒用了麼?
當然不是,vue在和後端聯調還是用的打包前的,而在django專案,只用打包後的dist
django和vue前後端分離專案,互動流程就是這樣:
使用者-電腦瀏覽器-django-dist包 -> vue-cli前端開發用的
打通這個流程要做兩個事情
第一,想辦法把路由設定成從vue專案中的index.html進行關聯上
從前:urls -> views.py -> .html的
現在:urls -> .html
具體操作:
urls.py中:
from django.views.generic import TemplateView path('index/',TemplateView.as_view(template_name='index.html')) # 加了這一行,就是把django的index這個uri指向front/dist/index.html頁面,而不是再去django的views裡面 這一步只是專案搭建階段,驗證django和vue的打通,後續開發,前端直接請求後端域名介面就好了 settings.py中,修改TEMPLATES的DIRS,其他不變: TEMPLATES = [ { ... 'DIRS': ['front/dist'], # 指定django模板路徑,讓django在讀取html時從前端專案front的打包目錄dist取index.html ... }
第二,想辦法把vue專案內的static資料夾下的靜態資源關聯上。
settings.py中:
STATICFILES_DIRS=[ os.path.join(BASE_DIR,"front/dist/static"), ]
打包
進入前端專案根目錄front下,執行npm run build
打包完,可以啟動django服務,存取看下是不是能存取到vue的頁面index.html
通過django服務存取vue的index.html
http://127.0.0.1:8000/index/#/about
左邊的是django的路由,右邊的是vue的路由,自動拼接
到此這篇關於django+vue專案搭建實現前後端通訊的文章就介紹到這了,更多相關django vue專案搭建內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45