You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native对接Django后端遇Axios网络错误问题求助

React Native请求Django后端出现Axios Network Error的解决方法

问题描述

在React Native项目中调用Django后端API时,触发错误:Possible Unhandled Promise Rejection (id: 0): [AxiosError: Network Error]。此前在React JS中实现过相同功能,但React Native环境下无法运行。

React Native代码

import React, { useState, useEffect } from "react";
import axios from "axios";

import { StyleSheet, ScrollView, View, Text } from "react-native";

// Components
import ProductCard from "../components/ProductCard";

export default function HomeScreen({ navigation }) {
  const [products, setProducts] = useState([]);

  useEffect(() => {
    async function fetchProducts() {
      const { data } = await axios.get("http://127.0.0.1:8000/api/products/");
      setProducts(data);
    }

    fetchProducts();
  }, []);

  return (
    <View style={styles.container}>
      <ScrollView style={styles.scrollView}>
        {products.map((product) => (
          <View style={styles.productsContainer}>
            <ProductCard product={product} navigation={navigation} />
          </View>
        ))}
      </ScrollView>
    </View>
  );
}

Django settings.py配置

INSTALLED_APPS = [
    "corsheaders",
]

MIDDLEWARE = [
    "corsheaders.middleware.CorsMiddleware",
    "django.middleware.common.CommonMiddleware",
]

CORS_ALLOW_ALL_ORIGINS = True

解决步骤

  • 替换本地IP地址
    React Native模拟器/真机无法通过127.0.0.1访问电脑上的Django服务,因为模拟器有独立的网络环境。找到电脑的本地IP(Windows用ipconfig,Mac/Linux用ifconfig或ip addr),将请求地址改为http://你的本地IP:8000/api/products/。

  • 允许Django服务外部访问
    启动Django时,使用命令python manage.py runserver 0.0.0.0:8000,让服务监听所有网卡,允许外部设备访问。默认的runserver仅监听127.0.0.1,只能本地访问。

  • 捕获Promise错误
    原代码未处理请求错误,会导致未捕获的Promise拒绝。修改fetchProducts函数添加错误捕获:

    async function fetchProducts() {
      try {
        const { data } = await axios.get("http://你的本地IP:8000/api/products/");
        setProducts(data);
      } catch (error) {
        console.error("获取数据失败:", error);
      }
    }
    
  • 检查网络与防火墙

    • 确保手机/模拟器和电脑处于同一Wi-Fi网络。
    • 检查电脑防火墙是否拦截8000端口的入站请求,必要时临时关闭防火墙测试。
  • 验证Django API可用性
    先在电脑浏览器访问http://你的本地IP:8000/api/products/,确认能正常返回JSON数据,排除Django后端自身的问题。

内容的提问来源于stack exchange,提问作者Martin Arreola

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 07:40:21