【问题标题】:Django Rest and AxiosDjango Rest 和 Axios
【发布时间】:2018-06-04 17:53:30
【问题描述】:

我正在尝试使用 DRF 和 Axios 发布数据。到目前为止,我已经尝试了几个不同的选项,结果相同,403(禁止)。我可以使用 axios.get 获取数据,但无法发布数据。我是休息和使用 ajax 的新手,所以如果这很明显,我深表歉意。

axios 调用

return axios({
                method: 'post',
                url: "/schedules/",
                data: {
                    "emp": this.emp.emp,
                    'start_time': this.startTime,
                    "end_time": this.endTime,
                    "date": this.today,
                    "location": this.location
                },
                xsrfHeaderName: "X-CSRFToken",
                responseType: 'json'
              })

Settings.py

CSRF_COOKIE_NAME = "XSRF-TOKEN"

序列化器

class SchedSerializer(serializers.ModelSerializer):

    class Meta:
        model = Schedule
        fields = (
            'location',
            'emp',
            'date',
            'start_time',
            'end_time'
        )

查看

class SchedViewSet(viewsets.ModelViewSet):
    queryset = Schedule.objects.all()
    serializer_class = serializers.SchedSerializer

【问题讨论】:

    标签: django django-rest-framework axios django-csrf


    【解决方案1】:

    这是我正在使用的有效设置。有两件事,您需要确保您的标头被正确发送。

    HTTP.defaults.headers.post['x-csrftoken'] = {{csrf_token}};
    HTTP.post('django-url/', {"id":id,"value":resp})
    

    我可以通过https://github.com/ottoyiu/django-cors-headers 解决这个问题。 确保您的 csrf_token 填充正确,然后确保您允许在 settings.py 中将正确的标头传递给 django 应用程序:

    CORS_ALLOW_HEADERS = (
    ...
        'x-csrftoken',
    ...
    }
    

    【讨论】:

      猜你喜欢
      • 2021-05-20
      • 2023-03-28
      • 2018-08-06
      • 1970-01-01
      • 2020-01-16
      • 2020-11-23
      • 2020-01-28
      • 1970-01-01
      • 2019-10-08
      相关资源
      最近更新 更多