TemplateDoesNotExist в / inventory / render_results / сообщении об ошибке в django - PullRequest
0 голосов
/ 09 марта 2020

Я использую код, который использовал ранее, но выдает ошибку, 'TemplateDoesNotExist в / inventory / render_results /' , и я не могу найти опечатку или логи c miss. Шаблон существует, и когда я проверяю код, запрос выполняется правильно. Я в недоумении.

search_device_list. html

{% extends "inventory/base.html" %}
{% block content %} 

<h2 align="left">Search Page</h2> 

<form action="{% url 'render_results' %}" method="POST" > 

 {% csrf_token %}  
 <body>
 <table>
  <tr>
    <td><b>Locations: &nbsp;&nbsp; </b></td>
    <td>
        <select name="location_name">
        {% for locations in locations %} 
        <option value="{{locations.location_name}}">{{locations.location_name}}</option>{% endfor%}
        </select>
    </td>
    <td><input type="submit" value="Submit"/></td>
  </tr>
  </table> 
  {% endblock content %}

render_results. html

     <html>

       <h2 align="left">Render Device List based on Location Choice</h2>

          <b> Locations:&nbsp;&nbsp; </b><br>{{locations }} <br><br><br>
          <b> Devices: &nbsp; &nbsp; </b><br>
              {% for device in devices %}{{device.device_name}} <br>{% endfor %}    </td>

          <br>
   <button type="submit" id="save">Save</button>
   </html>

views.py

def render_results (request):
    location_name = request.POST.get('location_name')
    my_devices = Devices.objects.filter(locations = Locations.objects.get(location_name = location_name))

    context = {"devices": my_devices,
               "locations": location_name}

    return render(request, 'inventory/render_results.html', context)  

  def search_device_list(request):
     locations = Locations.objects.all()
     print(locations)
     context = {"locations": locations}

     for locations in context['locations']:
        print(locations)

     location_name=request.POST.get('location_name')
     if request.method == 'GET':
            form = LocationsForm()
            print(locations)


     return render(request, 'inventory/search_device_list.html', context)  

и, наконец, URL-адреса. py

...
     url(r'^search_device_list/$', views.search_device_list, name='search_device_list'), 
     url(r'^render_results/$', views.render_results, name='render_results'), 

Ответы [ 3 ]

0 голосов
/ 09 марта 2020

У вас есть os.path.join(BASE_DIR, 'templates') в вашем файле настроек?

Это будет в разделе шаблонов. Этот код должен заменить пустой список для DIRS = []

https://docs.djangoproject.com/en/3.0/topics/templates/

Это всего лишь предположение, конечно. Это помогло бы увидеть полные settings.py и urls.py. Также, как было сказано ранее, убедитесь, что путь к вашим шаблонам - app_name / templates / app_name / html_file

0 голосов
/ 09 марта 2020

Если ваша ошибка NoReverseMatch просто означает, что у вас есть проблема с шаблоном URL либо в конце HTML, либо в URLconf. Тег зарезервированного URL в шаблонах HTML может быть просто {% url 'url_pattern_name' %}

Тег, который вы впервые использовали {% url 'inventory:render_results' %}. Указывает, что Django соответствует go для вашего URL-адреса conf, найдите URL-адреса с пространством имен ie. app_name = 'inventory'. Затем выполните поиск в пространстве имен, чтобы найти render_results. Вы можете использовать любую конфигурацию, но, опять же, последняя указывает, что ваш URL-адрес имеет пробел с app_name='inventory'.

Я не совсем уверен, что вы можете использовать тег без пространства имен HTML {url 'url_pattern_name'%} с конфигурацией URL-адреса пространства имен, например

https://docs.djangoproject.com/en/3.0/topics/http/urls/#reversing -namespaced-urls

0 голосов
/ 09 марта 2020
<form action="{% url 'inventory:render_results' %}" method="POST" > 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...