#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)