Flask + SQLAlchemy(sqlite3) + Vue.jsでtwitterユーザーの検索ツールを作っています。
ブラウザ側で「キーワード」入力、「選択」をしクリックすることで該当があれば検索結果が表示されるという処理を行いたいです。
下記がhtmlとvuejsですが
入力されたキーワードに対して、
プロフィールに該当する検索結果を表示する処理をするか、
ツイートに該当する検索結果を表示する処理をするか、
という分岐になります。(vuejsはコードの記入が不明です。。。)
html
1 <div> 2 <h5>{{ alert }}</h5> 3 </div> 4 <div class="form-group"> 5 <label for="id">Search</label> 6 <input type="text" class="form-control" id="find" v-model="find" placeholder="キーワード検索"> 7 </div> 8 <div class="form-group"> 9 <select v-model="selected"> 10 <option>プロフィール</option> 11 <option>ツイート</option> 12 </select> 13 </div> 14 <div class="form-group"> 15 <button class="btn btn-primary" v-on:click="action">Search</button> 16 </div>
vue
1 methods: { 2 action: function() { 3 let formData = new FormData(); 4 formData.append("find", this.find); 5 let self = this; 6 $.ajax({ 7 type: 'POST', 8 url: '/find', 9 data: formData, 10 processData: false, 11 contentType: false, 12 success: function(data) { 13 self.data = eval(data); 14 self.alert = '検索ワード:' + self.find 15 }, 16 error: function(request, status, err) { 17 console.log(err); 18 } 19 }); 20 } 21 }
上記を受けて、Flaskが検索ワードに加えて
「プロフィール」を選択された時は、プロフィールにキーワードが該当すればそれを返す、
「ツイート」を選択された時、ツイートにキーワードが該当すればそれを返す、
というそれぞれの分岐処理を行いたいです。
こちらも試行錯誤してみましたがどれもうまくいかず、一旦「検索キーワード」のみが渡されたコードになっています。ちなみに、データはSQLAlchemyでsqlite3を操作しています。sqlite3には、ID、ユーザー名、ツイート1件、プロフィールの4カラムがあります。
flask
1@app.route('/find', methods=['POST']) 2def find(): 3 find = request.form.get('find') 4 Session = sessionmaker(bind=engine) 5 ses = Session() 6 result = ses.query(Mydata).filter(Mydata.tweets.like('%{f}%'.format(f=find)))all() 7 ses.close() 8 return jsonify(getByList(result));
参考になる情報でも結構ですので、教えて頂けますと幸いです。
回答1件
あなたの回答
tips
プレビュー