ユーザーが検索パラメーターを入力できるテンプレートがあります (search.html)
{% from "_formhelpers.html" import render_field %}
<form method=”post”>
<dl>
{{ render_field(form. notificationId) }}
{{ render_field(form. recordName) }}
</dl>
<div id="searchResults" > </div>
</form>
大きい
{% macro render_field(field) %}
<dt>{{ field.label }}
<dd>{{ field(**kwargs)|safe }}
{% if field.errors %}
<ul class=errors>
{% for error in field.errors %}
<li>{{ error }}</li>
{% endfor %}
</ul>
{% endif %}
</dd>
{% endmacro %}
検索結果のテンプレート(result.html)
{% for notification in content %}
Result:
content[notification]['type'] }}</td>
{% endfor %}
次の ajax リクエストを使用して、検索結果を取得し、上記のテンプレートに表示します。 ajax 関数は、両方の検索フィールドのキーアップで呼び出されます。
$.ajax(
{
url: ‘result’,
dataType: "html",
data:createQueryString(),// gets the value from the dataFields and creates a queryString
success: function(data)
{
$("# searchResults").html(data); } });
また、検索基準セクション (2 つの検索フィールドを含むセクション) 用と検索結果セクション用の 2 つのビューがあります。
class NotificationSearchView(MethodView):
def get(self):
searchform = SearchForm()
return render_template("search.html”, searchform=searchform)
@classmethod
def registerSelf(cls, app):
NotificationSearchView.app = app
app.flaskApp.add_url_rule('/search ', view_func=NotificationSearchView.as_view(‘search’))
class NotificationResultView(MethodView):
def get(self):
searchform = SearchForm()
success, content=self.performSearch(searchform) //search method which takes the search parameters and performs the search
return render_template("result.html”, content=content)
@classmethod
def registerSelf(cls, app):
NotificationResultView.app = app
app.flaskApp.add_url_rule('/result', view_func= NotificationResultView.as_view(‘result’))
WTFフォームクラス
from wtforms import Form, TextField
class SearchForm(BaseForm):
notificationId = TextField(notificationId)
recordName = TextField(recordName)
私が直面している問題は、Ajax 呼び出しが NotificationResultView に対して行われたときに wtf フォーム オブジェクトが入力されないことです。これは、投稿要求が発生していないためだと思いますが、私の設計によれば、投稿の必要はありませんリクエスト。
私はポストリクエストとしてajaxリクエストを作成しようとしましたが、それでもwtfフォームオブジェクトは空に戻ります。
私の唯一の他のオプションは、ajax呼び出しを行うときにクエリ文字列で検索条件を渡す場合ですが、それが最善のアプローチであるかどうかはわかりません。この場合の進め方を提案してください。