Я знаю Django Разработка веб-приложений , Разработка API с помощью DjangoRestFramework и с использованием DjangoRestFramework API на других платформах программирования, таких как JavaScript и React .
Но то, что меня смущает, - это использование DjangoRestFramework API в простом Django веб-приложении.
Как получить значения, которые были проанализированы из сериализатора DjangorestFramework API и вернуть его в представление, которое является шаблоном HTML?
URL api/task-list
возвращает все задачи, добавленные в базу данных. Вот как это делается в программировании API.
def taskList(request):
tasks = Task.objects.all()
serializer = TaskSerializer(tasks, many=True)
return Response(serializer.data)
В то время как в Django веб-приложении задачи передаются как контекст, и оно возвращает или отображает шаблон, в котором мы можем oop задачу из списка задач и отобразить его на странице просмотра HTML.
def taskList(request):
tasks = Task.objects.all()
context = {'task': tasks}
return render(request, 'todo/tasklist.html', context)
Если нам нужно использовать API в приложении на основе Javascript, мы можем сделать это, просто выполнив следующие действия:
Если есть разделение HTML с оболочкой списка идентификаторов <div id="list-wrapper">
Тогда в разделе JavaScript мы можем использовать API и выполнить операцию извлечения данных, как показано ниже:
buildList()
function buildList(){
var wrapper = document.getElementById('list-wrapper')
wrapper.innerHTML = ''
var url = 'http://127.0.0.1:8000/api/task-list'
fetch(url)
.then((resp) => resp.json())
.then(function(data){
console.log('Data:', data)
var list = data
for (var i in list){
try{
document.getElementById(`data-row-${i}`).remove()
}catch(err){}
var title = `<span class="title">${list[i].title}</span>`
if (list[i].completed == true){
title = `<del class="title">${list[i].title}</del>`
}
var item = `
<div id="data-row-${i}" class="task-wrapper flex-wrapper">
<div style="flex:7">
<span class="title">${list[i].title}</span>
</div>
<div style="flex:1">
<button class="btn btn-sm btn-outline-info edit">Edit </button>
</div>
<div style="flex:1">
<button class="btn btn-sm btn-outline-dark delete">-</button>
</div>
</div>
`
wrapper.innerHTML += item
}
})
}
Примечание. Это код, который я изучил при разработке приложения TODO List.
Теперь основная путаница:
- Как использовать этот API, разработанный с помощью DjangoRestFramework, в проекте Django?
- Должен ли я создать новое django приложение или можно ли отображать HTML представления в том же приложении API.
- Буду ли я использовать URL-адрес, как в JavaScript или я буду импортировать классы из проекта API и использовать hods в Django методе просмотра проекта?
- Какой будет структура проекта? Будут ли это разные приложения внутри проекта или их можно будет сделать в одном приложении?
Было бы так любезно, если бы кто-нибудь мог помочь мне устранить путаницу.
Спасибо за аванс.