django理解02 前后端分离中的问题

前后端分离相对于传统方式的问题

  • 前后端数据交换的问题
  • 跨域问题

页面js往自身程序(django服务)发送请求,这是浏览器默认接受响应

而请求其它地方是浏览器认为存在潜在危险。自动隔离请求!!!

跨域问题的解决:

从后端入手(前端也可以)

安装模块

bash 复制代码
pip install django-cors-headers

settings.py中

  • 注册,添加中间件等配置
python 复制代码
INSTALLED_APPS = (
    ...
    'corsheaders'
)


MIDDLEWARE = [
    ...
    'corsheaders.middleware.CorsMiddleware',
    #'django.middleware.common.CommonMiddleware',     这个是原本就存在的
]
#跨域处理
#跨域增加忽略
CORS_ALLOW_CREDENTIALS = True
CORS_ORIGIN_ALLOW_ALL = True
CORS_ORIGIN_WHITLIST = (
    '*'
)

CORS_ALLOW_METHODS = (
    'GET',
    'POST',
)

CORS_ALLOW_HEADERS = (
    'XMLHttpRequest',
    'X_FILENAME',
    'accept-encoding',
    'authorization',
    'content-type',
    'dnt',
    'origin',
    'user-agent',
    'x-csrftoken',
    'x-requested-with',
    'Pragma',
)

解决后的测试:

后端:

python 复制代码
#api test
def get(request):
        data_list = [
            {"comment":"今天天气很好","date":"11.18","name":"左xx"},
            {"comment":"今天很开心","date":"3.21","name":"刘xx"},
            {"comment": "乐", "date": "3.3", "name": "靖xx"}
        ]
        request_data = {"code":200,"message":"请求成功"}
        request_data["data"] = data_list
        return JsonResponse(request_data)

前端:

javascript 复制代码
<template>
    <div>
        <h1>Part1</h1>
        <el-table
            :data="tableData"
            height="250"
            border
            style="width: 100%">
            <el-table-column
            prop="date"
            label="日期"
            width="180">
            </el-table-column>
            <el-table-column
            prop="name"
            label="姓名"
            width="180">
            </el-table-column>
            <el-table-column
            prop="comment"
            label="评论">
            </el-table-column>
        </el-table>
        <el-pagination
            background
            layout="prev, pager, next"
            :total="1000">
        </el-pagination>
    </div>
</template>

<script>
    import axios from 'axios';

  export default {
    data() {
      return {
        tableData: [],
      }
    },
    methods:{

    },
    mounted(){
        //发送异步请求,获取数据
        axios.get("http://127.0.0.1:8000/get/").then((result) =>{
            this.tableData=result.data.data;       //从返回的result中获取需要的信息
        });
        // alert(this.tableData);
    }

  }
</script>

效果图:

下一步

考虑加入数据库

相关推荐
占疏1 分钟前
列表分成指定的份数
python
Gaosiy27 分钟前
脑电python分析库MNE安装
python·脑机接口·脑电·mne
向量引擎小橙1 小时前
视觉艺术的“奇点”:深度拆解 Gemini-3-Pro-Image-Preview 绘画模型,看这只“香蕉”如何重塑 AI 创作逻辑!
人工智能·python·gpt·深度学习·llama
yaoxin5211232 小时前
324. Java Stream API - 实现 Collector 接口:自定义你的流式收集器
java·windows·python
独行soc2 小时前
2026年渗透测试面试题总结-24(题目+回答)
网络·python·安全·web安全·渗透测试·安全狮
米羊1212 小时前
Struts 2 漏洞(上)
java·后端·struts
SmartBrain2 小时前
Python 特性(第一部分):知识点讲解(含示例)
开发语言·人工智能·python·算法
Lun3866buzha2 小时前
基于YOLO11-C3k2-FFCM:跳甲虫害叶片智能检测与识别系统
python
梵得儿SHI2 小时前
Spring Cloud 实战攻坚:企业级用户服务开发(注册登录 + JWT 认证 + 权限控制)
后端·spring·spring cloud·用户注册与登录·jwt无状态认证体系·rbac权限控制·微服务用户中心
Gaosiy3 小时前
技术细节-MNE读取neuroscan curry9版本cdt文件
python·脑机接口·脑电·mne