【发布时间】:2026-01-15 10:35:01
【问题描述】:
我正在为我的 Django Rest Framework 后端开发 Nuxt.js/Vue 前端。即使我指定了允许未经身份验证的用户只读的权限,我似乎也无法从我的 API 成功加载数据。
Index.vue
import axios from 'axios'
export default {
async asyncData({ $axios, params }) {
try {
let customers = await $axios.$get(`/customer/`);
return { customers };
} catch (e) {
return { customers: [] };
}
},
head() {
return {
title: "Customer list"
};
},
components: {
},
data() {
return {
headers: [
{text: 'Name', value: 'name',},
{text: 'Address', value: 'address',},
{text: 'City', value: 'city',},
{text: 'Phone', value: 'phone_one',},
{text: 'Email', value: 'email',},
],
customers: [],
};
},
methods: {
deleteCustomer(customer_id) {
console.log(deleted `${customer.id}`)
}
}
};
</script>
Nuxt.config.js
module.exports = {
modules: [
'@nuxtjs/axios',
],
axios: {
baseURL: "http://localhost:8000/api"
},
}
我已验证 API 工作正常,但 Vue 中的客户数组始终为空。 API 位于http://localhost:8000/api/customer,用于检索客户列表。
【问题讨论】:
-
如果您使用的是 chrome,请执行
CTRL+SHIFT+j并单击网络选项卡。然后重新加载页面并在网络选项卡上查找请求。它显示了什么? -
如果它甚至没有向 DRF 发送请求,那么您需要调试为什么 axios 没有发送它。此外,无论响应如何,您的 DRF
python manage.py runserver 0.0.0.0:8000窗口都会显示一个请求(如果有)。 -
您可能需要以某种方式设置
crossDomain:true或xDomain: true。 -
不。如果您在网络选项卡上没有看到请求,那么您甚至还没有向 DRF 发送一个字节。您需要获取 axios 才能发送请求。然后你需要处理 CORS 的东西。目前,根据您的声明
"I'm not seeing any requests bound for localhost:8000 (DRF backend), just localhost:3000",您的 DRF 服务器尚未收到来自您的前端的请求 -
我解决了这个问题,感谢一百万的帮助。我对 DRF/Django 非常熟悉,但对 Nuxt/Vue 是全新的,所以这当然是一个学习过程。答案贴在下面。
标签: vue.js django-rest-framework nuxt.js