如何将标头与Django模板中的主页合并,两者都从不同的查询集获取数据?

时间:2019-03-06 14:23:01

标签: django django-models django-templates django-views

我遇到一种情况,想在页面中创建搜索。我想创建不与原始页面混合的搜索,因为我需要在多个页面中使用相同的搜索。我在模板文件夹的div中创建了搜索表,并将其命名为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>

我只能在与主页合并时看到“选择为选项”。我在做什么错了?

1 个答案:

答案 0 :(得分:0)

视图呈现模板,而不是相反:模板不调用视图。如果您不是通过ShowSearch URL查看页面,则该视图中的数据将不会传递到模板。

对于无论视图如何都需要包含在每个页面中的数据,请使用自定义模板标记。