Django + DjangoRestFramework: как создать Django WebApp с помощью DjangoRestFramework API? - PullRequest
0 голосов
/ 10 июля 2020

Я знаю 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.

Теперь основная путаница:

  1. Как использовать этот API, разработанный с помощью DjangoRestFramework, в проекте Django?
  2. Должен ли я создать новое django приложение или можно ли отображать HTML представления в том же приложении API.
  3. Буду ли я использовать URL-адрес, как в JavaScript или я буду импортировать классы из проекта API и использовать hods в Django методе просмотра проекта?
  4. Какой будет структура проекта? Будут ли это разные приложения внутри проекта или их можно будет сделать в одном приложении?

Было бы так любезно, если бы кто-нибудь мог помочь мне устранить путаницу.

Спасибо за аванс.

...