【问题标题】:Making axios request to django向 django 发出 axios 请求
【发布时间】:2019-02-05 08:49:54
【问题描述】:

在使用 axios 对 django 做出反应时,我在发送和接收数据时遇到了一个复杂的问题。 我没有使用 REST API。这是我的 Handel 函数,它与我的注册表单标签相关,每次单击提交按钮后,此函数都会执行:

HandelSignUp(e){

e.preventDefault();
let Username = this.refs.username.value;
let Pass = this.refs.pass.value;
let Email =this.refs.email.value;
axios({
  url:'http://127.0.0.1:8000/signupAuth/',
  mothod:'post',
   data:{
    username:this.Username,
    pass:this.Pass,
    email:this.Email
   },
   headers: {
      "X-CSRFToken": window.CSRF_TOKEN,
      "content-type": "application/json"
            }

}).then(respons =>{
  console.log(respons);
})
.catch(err =>{
  console.log(err);
});

这也是我的 django urls.py

urlpatterns = [

path('signupAuth/',ReactApp_View.signupRes),

]

ReactApp_View 是我正确导入的 ReactApp 文件中的 views.py。 好的,现在让我们看看我的views.py

def signupRes(request):
  body_unicode = request.body.decode('utf-8')
  data = json.loads(myjson)
  return HttpResponse(request.body)

毕竟,当我填写我的注册字段然后单击按钮时,我会在浏览器的控制台日志中看到此消息:

无法加载http://127.0.0.1:8000/signupAuth/:对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。 Origin 'http://localhost:8000' 因此不允许访问。

我该怎么办?

还有一个额外的问题:我的 axios 中给定的 url 发生了什么?

【问题讨论】:

  • 让我猜你正在使用 react start 应用程序或网络上许多流行的设置之一,其中反应组件实际上由运行在不同端口上的节点服务器提供服务。这实际上意味着对 drf 的 ajax 请求是一个跨源请求。要么设置 cors(是的 django cors 是你需要用谷歌搜索的),要么让你的 react 被 node 或其他任何东西转译,但由 django 提供服务

标签: django reactjs httprequest axios


【解决方案1】:

只需使用您尝试调用的相同主机 URL 打开您的网站。使用http://127.0.0.1:8000/ 而不是本地主机

【讨论】:

    猜你喜欢
    • 2021-11-12
    • 2018-02-09
    • 2019-09-29
    • 2018-08-03
    • 2023-03-31
    • 2020-09-26
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    相关资源
    最近更新 更多