Невозможно использовать теги шаблона - PullRequest
1 голос
/ 06 ноября 2019

Я пытаюсь создать форму с зависимыми раскрывающимися списками. Пока я смог добавить необходимые триггеры, но я только заметил, что ответное сообщение не отображает теги шаблона. Даже другие HTML-файлы, которые я пытаюсь добавить теги шаблона. чтобы меня просто игнорировали, я понятия не имею, что даже вызывает такую ​​ошибку

После просмотра нескольких других постов, в которых говорилось, что если бы я использовал {% load XYZ%}. То, что я должен использовать этот тег загрузки на всех моих HTML-страницах, но это не решило мою проблему

мои views.py:

from django.shortcuts import render,redirect
from django.views.generic.base import TemplateView
from status.forms import StatusForm
from status.models import FlightStatus
from django.views.generic import ListView, CreateView, UpdateView
from postlog.models import Flight
from django.urls import reverse_lazy
# Create your views here.
class StatusPageView(CreateView):

    template_name = "status/home.html"
    model = FlightStatus
    form_class = StatusForm
    success_url = reverse_lazy('status') 

def load_park_bay(request):
    flightid = request.GET.get('flight1')
    parks = Flight.objects.filter(fl_no='flightid').order_by('park_bay')
    context = {'parks': parks}
    return render(request, 'status/park_bay_dropdown_list.html', context)

мои urls.py:

from django.urls import path,include
from . import views
from django.contrib.staticfiles.urls import staticfiles_urlpatterns

urlpatterns = [
    path('', views.StatusPageView.as_view(), name='status'),
    path('ajax/load-park/', views.load_park_bay, name='ajax_load_park'),
]

моя домашняя страница, где присутствует моя форма home.html:

{% extends 'base_template1.html' %}
{% load static from staticfiles %}
{% load crispy_forms_tags %}

<!DOCTYPE html>

{% block title %} Status {% endblock %}

{% block content %} 
<div class="modal fade" id="Add_Modal" tabindex="-1" role="dialog" aria-labelledby="Add_ModalLabel" aria-hidden="true">
  <div class="modal-dialog" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title" id="AddModalLabel">Flight Details</h5>
        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
          <span aria-hidden="true">&times;</span>
        </button>
      </div>
      <div class="modal-body">
        <form method="post" id="statusForm" data-parks-url="{% url 'ajax_load_park' %}" novalidate>
            {% csrf_token %}
            {{ form|crispy }}
        <div class="modal-footer">
        <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
        <button type="button" class="btn btn-primary">Add Details</button>
      </div>
        </form>
      </div>
    </div>
  </div>
</div>
<script
  src="https://code.jquery.com/jquery-3.4.1.js"
  integrity="sha256-WpOohJOqMqqyKL9FccASB9O0KwACQJpFTUBLTYOVvVU="
  crossorigin="anonymous"></script> 
  <script>
    $("#id_fl_no").change(function () {
      var url = $("#statusForm").attr("data-parks-url");
      var flightId = $(this).val();

      $.ajax({
        url: url,
        data: {
          'flight1': flightId
        },
        success: function (data) {
          $("#id_park_bay").html(data);
        }
      });

    });
  </script>
{%endblock%}

ответ html служил ответом на запрос ajax park_bay_dropdown.html:

{% load static from staticfiles %}
{% load crispy_forms_tags %}

<option value="">---------</option>
{% for park in parks %}
    <option value="{{ park.fl_no }}">{{ park.park_bay }}</option>
{% endfor %}

Ответ получен: ссылка , даже когда я пытался отправить экземпляр формы в качестве контекста для отображения полной формы, ни один из тегов шаблона даже не отображался

1 Ответ

0 голосов
/ 06 ноября 2019

Поскольку вы сохраняете значение 'flight1', поступающее из ajax, в переменную flightid. Так что вам нужно написать flightid без '' в Query. Также придерживайтесь практики преобразования id исходной формы Ajax в int, чтобы избежать ошибок при запросах через ORM. Таким образом, ваш взгляд будет выглядеть следующим образом.

def load_park_bay(request):
    flightid = int(request.GET.get('flight1'))
    parks = Flight.objects.filter(fl_no=flightid).order_by('park_bay')
    context = {'parks': parks}
    return render(request, 'status/park_bay_dropdown_list.html', context)
...