如何在 Django 中正确捕获获取请求
How to properly catch fetch request in django
开始学习django
我有 js 代码,当我点击按钮时调用 fetch
button = document.querySelector('.button')
button.addEventListener('click', function(){
fetch('http://127.0.0.1:8000/test_fetch/',
{
method: 'GET',
headers: {
'Content-Type': 'application/json',
"X-Requested-With": "XMLHttpRequest",
"HTTP_X_REQUESTED_WITH": "XMLHttpRequest"
}
})
})
<!DOCTYPE html>
{% load static %}
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<button class="button">hello</button>
{{ ajax }}
<script src="{% static 'train_app/js/test_fetch.js' %}"></script>
</body>
class TestFetch(TemplateView):
template_name = 'train_app/test_fetch.html'
def get(self, request):
ajax = request.headers
data = {
'name': 'Yura',
'age': 20,
'list': [1,2,3,4],
'ajax': ajax
}
return render(request, self.template_name, context=data)
我尝试使用 request.META 和 request.headers 捕获获取请求。但是他们 return 给我的信息只是关于通过 urls.py.
引起的第一个 get 请求的信息
如何获取有关这是提取请求及其 Content-Type 属性的信息。
在 'http://127.0.0.1:8000/test_fetch/' 的 get 方法中,我认为你定义了一个渲染函数。
所以,如果你想通过get方法获取数据,你应该定义新的api.
例如
views.py
from django.http import JsonResponse
class TestFetch(TemplateView):
...
def get_json_data(request):
ajax = request.headers
data = {
'name': 'Yura',
'age': 20,
'list': [1,2,3,4],
'ajax': ajax
}
return JsonResponse(data)
urls.py
urlpatterns = [
path("test_fetch/", TestFetch..., name="mainpage"),
path("test_data/", get_json_data, name="get_data"),
]
test_fetch.js
button = document.querySelector('.button')
button.addEventListener('click', function(){
fetch("{% url 'get_data' %}", // It is recommended not to use the absolute path as it will interfere with deployment.
{
method: 'GET',
headers: {
'Content-Type': 'application/json',
"X-Requested-With": "XMLHttpRequest",
"HTTP_X_REQUESTED_WITH": "XMLHttpRequest"
}
})
})
开始学习django
我有 js 代码,当我点击按钮时调用 fetch
button = document.querySelector('.button')
button.addEventListener('click', function(){
fetch('http://127.0.0.1:8000/test_fetch/',
{
method: 'GET',
headers: {
'Content-Type': 'application/json',
"X-Requested-With": "XMLHttpRequest",
"HTTP_X_REQUESTED_WITH": "XMLHttpRequest"
}
})
})
<!DOCTYPE html>
{% load static %}
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<button class="button">hello</button>
{{ ajax }}
<script src="{% static 'train_app/js/test_fetch.js' %}"></script>
</body>
class TestFetch(TemplateView):
template_name = 'train_app/test_fetch.html'
def get(self, request):
ajax = request.headers
data = {
'name': 'Yura',
'age': 20,
'list': [1,2,3,4],
'ajax': ajax
}
return render(request, self.template_name, context=data)
我尝试使用 request.META 和 request.headers 捕获获取请求。但是他们 return 给我的信息只是关于通过 urls.py.
引起的第一个 get 请求的信息如何获取有关这是提取请求及其 Content-Type 属性的信息。
在 'http://127.0.0.1:8000/test_fetch/' 的 get 方法中,我认为你定义了一个渲染函数。
所以,如果你想通过get方法获取数据,你应该定义新的api.
例如
views.py
from django.http import JsonResponse
class TestFetch(TemplateView):
...
def get_json_data(request):
ajax = request.headers
data = {
'name': 'Yura',
'age': 20,
'list': [1,2,3,4],
'ajax': ajax
}
return JsonResponse(data)
urls.py
urlpatterns = [
path("test_fetch/", TestFetch..., name="mainpage"),
path("test_data/", get_json_data, name="get_data"),
]
test_fetch.js
button = document.querySelector('.button')
button.addEventListener('click', function(){
fetch("{% url 'get_data' %}", // It is recommended not to use the absolute path as it will interfere with deployment.
{
method: 'GET',
headers: {
'Content-Type': 'application/json',
"X-Requested-With": "XMLHttpRequest",
"HTTP_X_REQUESTED_WITH": "XMLHttpRequest"
}
})
})