跨域问题:

-同源策略(浏览器的安全策略)

            -只允许当前页面朝当前域下发请求,如果向其他域发请求,请求可以正常发送,数据也可以拿回,但是被浏览器拦截了

        域名与端口都不一样的话,是无法接收拿过来的数据的

        -cors:只要服务器实现了CORS,就可以实现跨域资源共享

            -简单请求
                -只发一次请求
            -非简单请求:
                -发两次请求:一次预检(OPTION请求),只有服务端允许发请求,才能继续发第二次正常请求,一次真正的请求


如何使用:

方式一:

点击事件端(有ajax请求过去的一端)

django

settings.py

并且注释掉csrf的那一段:

MIDDLEWARE=[django.middleware.csrf.CsrfViewMiddleware]

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

    
    
    
Title
点我


测试有数据的一端:

urls.py

url(r'^click/', views.click),

views.py

def click(request):    print(" this is click")    ret = HttpResponse('click')    ret['Access-Control-Allow-Origin'] = 'http://127.0.0.1:8001' # 允许访问过来的域     return ret


测试:成功。

图片.png

报错

图片.png


方式二:

点击事件端(有ajax请求过去的一端)

django

settings.py

并且注释掉csrf的那一段:

MIDDLEWARE=[django.middleware.csrf.CsrfViewMiddleware]

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

    
    
    
Title
点我

测试有数据的一端:

urls.py

url(r'^click/', views.click),

views.py

from django.shortcuts import render, HttpResponsedef click(request):    ret = HttpResponse('click')    ret['Access-Control-Allow-Origin'] = '*'    if request.method == 'OPTIONS':       ret['Access-Control-Allow-Headers'] = '*'    return ret

测试:

图片.png

图片.png

.

图片.png

图片.png


自定义中间件处理跨域问题:(方式三:推荐)

访问端(点击事件请求端):

settings.py

STATICFILES_DIRS = [    os.path.join(BASE_DIR, 'static')]

MIDDLEWARE=['django.middleware.csrf.CsrfViewMiddleware'],   带有这行的注释掉

django 建立static把jquery-3.3.1.js放进去。

templates/index.html (非简单请求方式,简单请求方式:把type类型改为'get',接着把带有"contentType" 注释掉即可)

    
    
    
Title
点我

urls.py

url(r'^index/', views.index),

views.py

def index(request):    return render(request,'index.html')

被请求的一端:

urls.py

url(r'^click/', views.click),

views.py

def click(request):    print(" this is click")    return HttpResponse('click')

settings.py

MIDDLEWARE=['django.middleware.csrf.CsrfViewMiddleware'],   带有这行的注释掉

最后一段添加以下内容:

# 字段注释含义: 项目名称,自定义中件间文件名,自定义中间件文件中的类名。'app01.myMiddle.MyCorsMiddle',

app01/myMiddle.py

from django.utils.deprecation import MiddlewareMixinclass MyCorsMiddle(MiddlewareMixin):    def process_response(self,request,response):        # 简单请求:        # 允许http://127.0.0.1:8001域向我发请求        # ret['Access-Control-Allow-Origin']='http://127.0.0.1:8001'        # 允许所有人向我发请求        response['Access-Control-Allow-Origin'] = '*'        if request.method == 'OPTIONS':            # 所有的头信息都允许            response['Access-Control-Allow-Headers'] = '*'        return response

先启动被请求的一端,再启动访问端:

测试:

图片.png

图片.png

图片.png

一、安装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创建项目名)

图片.png

二、pycharm 配置vue.js插件

File--setting--->plugins--->搜索vue.js 安装后,点击Ok,之后会重启pycharm 即可。

图片.png

Pycharm 配置 运行

图片.png

图片.png

三、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 APIViewfrom rest_framework.response import Responseclass course(APIView):    def get(self,request,*args,**kwargs):        return Response(['python','linux'])

启动后打开链接:

使用json格式打开