Django Rest 和 Axios
Posted
技术标签:
【中文标题】Django Rest 和 Axios【英文标题】:Django Rest and 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
【问题讨论】:
【参考方案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',
...
【讨论】:
以上是关于Django Rest 和 Axios的主要内容,如果未能解决你的问题,请参考以下文章
Django + AngularJS:没有使用普通 URL 和视图的 Django REST 框架的类 REST 端点?
Django Rest Framework 和 django Rest Framework simplejwt 两因素身份验证
Django-rest-framework 和 django-rest-framework-jwt APIViews and validation Authorization headers