0

我希望我的搜索结果显示在另一个 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>

视图.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})

模型.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表单标签的作用。请给我你的建议。

4

3 回答 3

0

看起来表单 Action 代表 Html 文件,而不是要调用的 django 方法。

你从根本上做的是:

1)您有一个带有 POST 操作的表单,并且在提交时,您在“action”标签中提到的方法将被调用。

2) 处理 POST 数据后,重定向到 searchresult.html。

希望这可以帮助。

于 2013-11-14T07:26:22.627 回答
0
  1. 将表单的属性更改action为映射到search方法的 URL。

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

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

    {% for i in var1 %}
        {{i.name}}<br>
    {% endfor %}
    
于 2013-11-14T07:38:03.293 回答
0

将您的操作更改为

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

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

于 2013-11-14T07:48:40.447 回答