Я пытаюсь внедрить уже обработанный шаблон Django в раздел моей страницы с помощью AJAX

Я следую этому туториалу о том, как получать живые обновления на django без обновления страницы.
В учебнике используются колбы render_template для отображения HTML-кода, который затем вставляется в раздел страницы. Я пытаюсь сделать то же самое в Django, но django просто напрямую отображает его в браузере... Я этого не хочу. Я просто хочу, чтобы django отправлял обработанный html-ответ в AJAX, который затем мог бы вставить его в раздел на моей живой странице.
Вот код :

views.py

class ManageView(LoginRequiredMixin, View):
template_name = "dashboard/manage.html"
context = {}

def get(self, request, app_id, folder_id=None):
    app = App.objects.get(pk=int(app_id))
    self.context["app"] = app
    if folder_id:
        try:
            self.context["folder"] = Folder.objects.get(id=folder_id)
        except:
            self.context["folder"] = app.folder
    else:
        self.context["folder"] = app.folder
    return render(request, self.template_name, self.context)

def post(self, request, app_id, folder_id=None):
    try:
        files = request.FILES.getlist('files_to_upload')
        folder_name = request.POST.get("folder")
        master = request.POST.get("master")
        if master:
            master = Folder.objects.get(id=master)
        if folder_name:
            Folder.objects.create(name=folder_name, owner=request.user.customer, folder=master)
        if files:
            for file in files:
                if file.size < settings.MAX_FILE_SIZE:
                    File.objects.create(folder=master, item=file, name=file.name, size=file.size)
        app = App.objects.get(pk=int(app_id))
        self.context["app"] = app
        if folder_id:
            try:
                self.context["folder"] = Folder.objects.get(id=folder_id)
            except:
                self.context["folder"] = app.folder
        else:
            self.context["folder"] = app.folder
        return render(request, 'dashboard/filesection.html', self.context)
    except DatabaseError:
        return render(request, "dashboard/index.html", self.context)

urls.py

urlpatterns = [    url(r'^manage/(?P<app_id>[0-9]+)/(?P<folder_id>.+)', test, name='browse'), ]

dashboard/manage.html

       <div class = "modal-body">
            <form id = "app-launch" enctype = "multipart/form-data" method = "post">
                {% csrf_token %}
              <div class = "form-row">
                <div class = "input-group mb-3">
                  <div class = "custom-file">
                    <input type = "hidden" value = "{{ folder.id }}" name = "master">
                    <input type = "hidden" value = "{{ app.id }}" name = "file_app_id">
                    <input type = "file" class = "custom-file-input" name = "files_to_upload" id = "file_upload" accept = ".py,.js,.json,.txt,.css,.html,.pdf,.htm,.doc,.docx,.log,.ppt,.pptx" multiple>
                    <label class = "custom-file-label" for = "inputGroupFile02">Choose file</label>
                  </div>
                  <div class = "input-group-append">
                    <button class = "input-group-text btn btn-primary" id = "">Upload</button>
                    <button class = "input-group-text btn btn-primary fileButton" id = "">Upload</button>
                  </div>
                </div>
              </div>
            </form>
          </div>
          <div class = "modal-footer">
            <button type = "button" class = "btn btn-outline-danger" data-dismiss = "modal">Cancel</button>
          </div>
        </div>

app.js AJAX звонки

$(document).ready(function() {

    $(document).on('click','fileButton', function(e) {
        e.preventDefault()

    // const axios = require('axios');

    var formData = new FormData();
    var ins = document.getElementById('file_upload').files.length;
    for (var x = 0; x < ins; x++) {
    formData.append("files_to_upload", document.getElementById('file_upload').files[x]);
}
    const csrftoken = getCookie('csrftoken');
    var app_id = $('input[name = "file_app_id"]').val();
    var folder_id = $('input[name = "master"]').val();
    formData.append('master', folder_id);

    req = $.ajax({
        type: 'POST',
        url: `/manage/${app_id}/${folder_id}`,
        data: formData,
        processData: false,
        contentType: false,
        headers: {
            "X-CSRFToken": csrftoken,
        }
    });
    req.done(function (data) {
        $('#refreshSection').html(data)
    })
});
});

AJAX POST, и все работает, просто django обновляет и отображает этот шаблон раздела в браузере, который мне не нужен.

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
0
110
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

[Решено]

Это была ошибка с моей стороны. Я пропустил e.preventDefault() что действительно тупо.

Другие вопросы по теме