91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么使用django和vue項目搭建實現前后端通信

發布時間:2023-02-25 15:00:26 來源:億速云 閱讀:148 作者:iii 欄目:開發技術

本文小編為大家詳細介紹“怎么使用django和vue項目搭建實現前后端通信”,內容詳細,步驟清晰,細節處理妥當,希望這篇“怎么使用django和vue項目搭建實現前后端通信”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

django 環境搭建

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:\myproject\yiyan_webauto
$ npm audit fix
npm ERR! code EAUDITNOPJSON
npm ERR! audit No package.json found: Cannot audit a project without a package.json

npm ERR! A complete log of this run can be found in:
npm ERR!     D:\Program Files\nodejs\node_cache\_logs\2022-03-01T04_21_12_141Z-debug.log

D:\myproject\yiyan_webauto
$ npm audit
npm ERR! code EAUDITNOPJSON
npm ERR! audit No package.json found: Cannot audit a project without a package.json

npm ERR! A complete log of this run can be found in:
npm ERR!     D:\Program Files\nodejs\node_cache\_logs\2022-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 最終看到頁面上呈現的內容

曲線救國打通vue和django

vue適配django

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和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項目搭建實現前后端通信”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

繁昌县| 沁源县| 衡南县| 义马市| 盐城市| 上林县| 雷州市| 阳东县| 平潭县| 浦城县| 关岭| 腾冲县| 福安市| 繁峙县| 仁布县| 桃源县| 三门县| 镇巴县| 尤溪县| 清远市| 玛曲县| 平谷区| 绥化市| 修水县| 桐梓县| 玛多县| 贺兰县| 兴海县| 青神县| 高要市| 郓城县| 衡阳市| 潜山县| 屯留县| 酉阳| 海伦市| 玉门市| 湘阴县| 潍坊市| 循化| 宁武县|