Как объединить заголовок с главной страницей в шаблоне Django, где оба получают данные из разных наборов запросов?

#django #django-models #django-templates #django-views

#django #django-модели #django-templates #django-просмотры

Вопрос:

У меня есть ситуация, когда я хочу создать поиск на своей странице. Я хочу создать поиск без его смешивания с исходной страницей, поскольку мне нужно использовать этот же поиск более чем на одной странице. Я создал таблицу поиска в div в папке templates и назвал ее MySearch.html . Теперь я включил это на главную страницу как {% include ‘MySearch.html ‘%} и он может предоставить мне выпадающий список со статическим текстом, но не с параметрами, которые я заполняю набором запросов.

В urls.py —

 url(r'Search', myproj.type4.views.ShowSearch, name='Search'),
  

В ShowSearch() —

 def ShowSearch(request):
        countryqueryset = Type4Main.objects.all().values('country').distinct()
        return render(request,'MySearch.html',{
                'countryqueryset':countryqueryset,
        })
  

В MySearch.html —

 <!DOCTYPE html>
<html lang="en">
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <head>
        <meta charset="UTF-8"/>
        <title> My Search
        </title>
    </head>

    <body>
        <div id ="mysearch" name="mysearch">
            <table id="mysearchtbl" name="mysearchtbl">
                <tr>
                    <th>
                        Country
                    </th>
                </tr>
                <tr>
                    <td>
                        <select id="country">
                            <option value="0">Select</option>
                                {% for country in countryqueryset %}
                                    <option value="{{country.country}}">{{country.country}}</option>
                                {% endfor %}
                        </select>
                    </td>
                </tr>
            </table>
        </div>
    </body>    
</html>
  

Я вижу Select as option только тогда, когда он сливается с главной страницей. Что я делаю не так?

Ответ №1:

Представления отображают шаблоны, а не наоборот: шаблоны не вызывают представления. Если вы не просматриваете страницу через URL ShowSearch, то данные из этого представления не будут переданы в шаблон.

Для данных, которые необходимо включить на каждую страницу независимо от вида, используйте пользовательский тег шаблона.

Комментарии:

1. О .. Хорошо. Спасибо за предложенный вариант 🙂 (y)