跨域問題:
-同源策略(瀏覽器的安全策略)
-只允許當前頁面朝當前域下發請求,如果向其他域發請求,請求可以正常發送,數據也可以拿回,但是被瀏覽器攔截了
域名與端口都不一樣的話,是無法接收拿過來的數據的
-cors:只要服務器實現了CORS,就可以實現跨域資源共享
-簡單請求
-只發一次請求
-非簡單請求:
-發兩次請求:一次預檢(OPTION請求),只有服務端允許發請求,才能繼續發第二次正常請求,一次真正的請求
如何使用:
點擊事件端(有ajax請求過去的一端)
django
settings.py
STATIC_URL = '/static/' STATICFILES_DIRS = [ os.path.join(BASE_DIR, 'static') ]
項目下創建目錄 pro12_21\static\存放jquery-3.3.1.js文件
urls.py
url(r'^index/', views.index),
views.py
def index(request): return render(request,'index.html')
templates\index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <script src="/static/jquery-3.3.1.js"></script> <title>Title</title> </head> <body> <button id="btn">點我</button> </body> <script> $('#btn').click(function () { $.ajax({ url:'http://127.0.0.1:8000/click/', type:'get', success:function (data) { console.log(data) alert(data) } }) }) </script> </html>
測試有數據的一端:
urls.py
url(r'^click/', views.click),
views.py
def click(request): print(" this is click") ret = HttpResponse('click') ret['Access-Control-Allow-Origin'] = ' # 允許訪問過來的域 return ret
測試:成功。
報錯:
一、安裝vue及創建項目:
1、首先裝Node.js
下載:http://cdn.npm.taobao.org/dist/node/v10.14.2/node-v10.14.2-x64.msi
接着下一步,下一步,ok,
linux:
解壓,配置環境變量OK,(這裏不再敘述)
創建vue項目:
在指定的目錄中創建項目:
cd "vue-project"
清除緩存記錄
npm cache clean --force
開始創建:
vue create pro_1 (項目名)
也可以ui 創建
vue ui (運行後輸入url創建項目名)
二、pycharm 配置vue.js插件
File--setting--->plugins--->搜索vue.js 安裝後,點擊Ok,之後會重啓pycharm 即可。
Pycharm 配置 運行
三、vue 目錄結構
-node_modules:項目依賴(以後項目要傳到git上,這個不能傳)
-publish--->index.html 是總頁面
-src :項目
-assets:靜態資源
-components:組件
-views:視圖組件
-APP.vue:根組件
-main.js :總的入口js
-router.js :路由相關,所有路由的配置,在這裏面
-store.js :vuex狀態管理器
-package.json:項目的依賴,npm install 是根據它來安裝依賴的
每個組件會有三部分:
-template
-style
-script
四、axios的使用
在vue的項目中安裝axios
npm install axios
安裝完後,package.json文件中會有axios,以及對應的版本
在django項目中新建立一個項目,配置:
settings.py
INSTALLED_APPS=[]中添加:
rest_framework 支持rest_framework
urls.py
url(r'^course/',views.course.as_view())
views.py
from django.shortcuts import render # Create your views here. from rest_framework.views import APIView from rest_framework.response import Response class course(APIView): def get(self,request,*args,**kwargs): return Response(['python','linux'])
啓動後打開鏈接:
http://localhost:8000/course/?format=json 使用json格式打開