如何使用 React-native 访问 Django 本地服务器数据?

Posted

技术标签:

【中文标题】如何使用 React-native 访问 Django 本地服务器数据?【英文标题】:How to access Django local server data with React-native? 【发布时间】:2020-11-21 23:06:08 【问题描述】:

我使用 django rest 框架构建了一个 Django API。 并且想在我的 react-native 应用程序中访问 api 的 json 响应数据。 但是出现错误(网络请求失败

DJANGO 回应

反应原生

错误

网络请求失败

node_modules/whatwg-fetch/dist/fetch.umd.js:505:17 in setTimeout$argument_0 node_modules/react-native/Libraries/Core/Timers/JSTimers.js:135:14 in _callTimer node_modules/react-native/Libraries/Core/Timers/JSTimers.js:387:16 in callTimers node_modules/react-native/Libraries/BatchedBridge/MessageQueue.js:425:19 in __callFunction node_modules/react-native/Libraries/BatchedBridge/MessageQueue.js:112:6 in __guard$argument_0 node_modules/react-native/Libraries/BatchedBridge/MessageQueue.js:373:10 in __guard node_modules/react-native/Libraries/BatchedBridge/MessageQueue.js:111:4 in callFunctionReturnFlushedQueue [native code]:null in callFunctionReturnFlushedQueue

【问题讨论】:

【参考方案1】:

请考虑采纳以下建议:

    在您的设备上激活开发者模式,然后打开“USB 调试”模式。

    将您的设备插入电脑上的 USB 端口

    将此行添加到scripts 对象内的package.json 文件中:

    "android-dev": "adb reverse tcp:8081 tcp:8081"

    检查您的 settings.py Django 项目文件中是否配置了 CORS,并确保允许所有主机访问该项目(如果这对您的测试很重要,请指定主机)。

    INSTALLED_APPS = [ ... 'rest_framework', 'corsheaders', ... ]

    MIDDLEWARE = [
    ...
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'corsheaders.middleware.CorsMiddleware',
    'django.middleware.common.CommonMiddleware',
    ...
    ]
    
    CORS_ORIGIN_ALLOW_ALL = True
    ALLOWED_HOSTS = ['*']
    

    检查您的本地 IP(通常以 192.168... 开头)。通过在 Windows 上运行 ipconfig 或在 linux 上运行 ifconfig 来做到这一点。

    确保您使用与本地网络相同的 IP 运行 Django 项目。例如,我的本地 ip 是 192.168.15.2,所以我运行python manage.py runserver 192.168.15.2:8000。就我而言,我喜欢使用 Pycharm,所以我在服务器设置中配置它

    最后一步,在您的请求中使用相同的 IP,并在请求标头中添加 "Access-Control-Allow-Origin":'*'。所以它会是这样的:

请注意,我使用 axios 发送请求,但您可以使用 fetch here 检查如何在请求中添加标头。

祝你一切顺利。这真是一个烦人的问题,我花了一些时间才弄清楚。

【讨论】:

以上是关于如何使用 React-native 访问 Django 本地服务器数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 react-native 中访问相机我无法将图片保存在手机存储中

使用 redux 在 react-native 应用程序中保存访问令牌的最佳实践是啥?

react-native:无法使用发布模式访问Android权限

如何在react-native / redux中处理外部数据库更新?

react-native 应用程序中如何保护敏感数据

react-native- 网络访问