django模板表单在另一个html文件中显示结果

时间:2013-11-14 07:11:31

标签: python html django

我希望我的搜索结果显示在另一个html文件中。我的模板如下:

<html>
    <head></head>
    <body>
        <div id="div1">
            {% for i in var1 %}
                {{i.name}}<br>
            {% endfor %}
        </div>
        <form action="searchresult.html" method="post">{% csrf_token %}
            <input type="text" name="search1">
            <input type="submit" id="click1" value="search">
        </form>
    </body>
</html>

views.py

def search(request):
    var = ""
    if request.method=='POST':
        s1  = request.POST.get("search1")
        var = form1.objects.all().filter(keyskills=s1)
    return render(request,"search.html",{'var1':var})

models.py

class form1(models.Model):
    name          = models.CharField(max_length=20)
    qualification = models.CharField(max_length=20)
    keyskills     = models.CharField(max_length=50)

    def __unicode__(self):
        return self.name,self.qualification,self.keyskills

我的结果显示了同一页面中的搜索详情。相反,我希望它显示在searchresult.html中。我已经在表格标签的行动中写了searchresult.html。请给我你的建议。

3 个答案:

答案 0 :(得分:0)

看起来形式Action重复了Html文件,而不是要调用的django方法。

你从根本上做的是:

1)您有一个包含POST操作的表单,在提交时,您将调用“action”标记中提到的方法。

2)使用POST数据进行处理后,再重定向到searchresult.html。

希望这有帮助。

答案 1 :(得分:0)

  1. 将表单的action属性更改为映射到search方法的网址。

  2. search方法中;返回searchresult.html模板:return render(request, 'searchresult.html', {'var1': var1 })

  3. searchresult.html模板中,添加:

    {% for i in var1 %}
        {{i.name}}<br>
    {% endfor %}
    

答案 2 :(得分:0)

将您的操作更改为

<form action="{% url your_project_name.your_app_name.views.search %}" method="post">

如果您发布了urls.py内容,会有所帮助。