#javascript #python #django
#javascript #python #django
Вопрос:
Это код, который у меня есть, при нажатии на него он должен определять URL, введенный в форме, а затем он запускает скребок, который распечатывает электронные письма, найденные по URL. Я хочу, чтобы результаты были напечатаны на той же странице. Как я должен создать свой API для достижения этой цели?
Код Javascript:
function submitURL() {
const url = document.querySelector("#InputSearch").value;
const data = { url };
fetch('http://127.0.0.1:8000/api/', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(data),
})
.then(response => response.json())
.then(data => {
console.log('Success:', data);
})
.catch((error) => {
console.error('Error:', error);
});
}
Создан текущий API (я хочу, чтобы он принимал данные найденных электронных писем):
class apiOverview(APIView):
serializer_class = serializers.EmailsSerializer
def post(self, request):
serializer = self.serializer_class(data=request.data)
if serializer.is_valid():
url = serializer.validated_data.get('url')
message = f'The url is {url}'
return Response({'message': message})
else:
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def patch(self, request, pk=None):
return Response({'method': 'PATCH'})
def put(self, request, pk=None):
return Response({'method': 'PUT'})
def delete(self, request, pk=None):
return Response({'method': 'DELETE'})
Комментарии:
1. Я не думаю, что это было бы хорошей идеей для изменения данных в самом api, поскольку пользователи будут делиться этими измененными данными. Если вы не аутентифицировали пользователей, назначив им каждому идентификатор, который может быть жизнеспособным способом обновления объекта api. Я не уверен, что вы подразумеваете под той же страницей. Вы имеете в виду печать ответа с сервера на javascript? Похоже, вы уже это делаете …?
2. если вы планируете хранить свои данные в api
3. да, я думаю, для печати ответа с сервера на Javascript. Я вижу, что он уже это делает. Но никакой информации не появляется…
4. возможно, что-то не так с регистрацией в вашем браузере. Проверьте наличие ошибок, и если их нет, попробуйте вместо этого предупредить значение, если вы еще не пробовали.
Ответ №1:
Если вы хотите отобразить результаты вызова API в своем документе с помощью javascript, используя данные из ответа как data
:
let dataArea = document.createElement('p');
data['dataPoints'].forEach(dataPoint =>
let dataChunk = document.createElement('p');
dataChunk.innerText = dataPoint.text;
dataArea.appendChild(dataChunk);
)
Если вы предпочитаете использовать jQuery, там есть больше вариантов:
https://www.w3schools.com/jquery/jquery_dom_add.asp
Комментарии:
1.
Uncaught SyntaxError: missing ) after argument list
Я не знаю, почему он говорит об этой ошибке