Catch All URL Path di Python Flask

Project kali ini agak unik, karena client meminta aplikasi web-nya dapat menangkap semua tipe URL yang masuk, atau dengan kata lain meminimalkan halaman 404. Bagaimana cara melakukannya di Flask? Continue reading “Catch All URL Path di Python Flask”

Advertisements

Mencatat Waktu Response Flask Framework

Salah satu hal yang kurang dari Flask, web server bawaannya, yakni werkzeurg tidak menampilkan timer untuk setiap proses request/response. Untuk mengatasinya, kita dapat menambahkan baris berikut di views.py: Continue reading “Mencatat Waktu Response Flask Framework”

Membuat Pagination di Flask + MongoDB

Pertama, kita butuh flask extension yang bernama flask-paginate

https://pythonhosted.org/Flask-paginate/

Kemudian tambahkan baris berikut di route yang mau di-paginasi, misal search result:

from flask_paginate import Pagination, get_page_parameter

@app.route("/search/<keyword>")
def search(keyword):
	page = request.args.get(get_page_parameter(), type=int, default=1)
	per_page = 3
	offset = (page - 1) * per_page
	data = db.product.find({'$text': {'$search': keyword}}, {'score':
		{'$meta':
		'textScore'}}).sort([('score', {'$meta': 'textScore'})]).skip(offset).limit(per_page)

	pagination = Pagination(page=page,
		per_page=per_page,
		total=data.count(),
		css_framework='bootstrap3',
		search=False,
		record_name='products')

	keyword_title = keyword.replace('-', ' ').title()
	return render_template("search.html",
		keyword_title=keyword_title,
		data=data,
		pagination=pagination
	)

Selanjutnya di template search.html:

{% for i in data %}
<p>{{ i['title'] }}</p>
{% endfor %}

{{ pagination.info }}
{{ pagination.links }}

Langkah-langkahnya adalah:

  1. Menentukan per_page (limit di mongo)
  2. Menentukan offset (skip kalau di mongo)
  3. Membuat query ke mongo
  4. Membuat object paginasi
  5. Menampilkan data paginasi