30-05-2017, Saat: 17:11
Javascript ile uğraşanlar momentjs kütüphanesini bilirler. Bu kütüphane ile zaman ile ilgili işlemler için kullanılır. Sosyal medyada sıklıkla gördüğümüz "1 saat önce paylaştı" gibi zaman gösterimlerini kendi sitenizde momentjs ile yapabilirsiniz.
Flask moment eklentisi bu bu kütüphaneyi kullanır. Eklentiyi yüklemek için:
$ pip install flask-moment
Eklentiyi uygulamanıza eklemek için:
from flask import Flask
from flask_moment import Moment
from flask_bootstrap import Bootstrap
app = Flask(__name__)
moment = Moment(app)
bootstrap = Bootstrap(app)
html sayfalarınızda bu eklentiyi kullanmak için bootstrap eklentisini de kullanmanızı öneririm çünkü momentjs kütüphanesini kullanırsanız jquery.js kütüphanesinide kullanmak zorunda kalırsınız. Ama flask-bootstrap eklentisini kurduysanız jquery.js zaten gelmiştir.
Eğer flask-bootstrap ve flask-moment eklentilerini kurduysanız html sayfanızda aşağıdaki gibi moment kütüphanesini kullanabilirsiniz:
#index.html
{% extends 'bootstrap/base.html' %}
{% block scripts %}
{{super()}}
{{moment.include_moment()}} {{moment.lang('tr')}}
{% endblock %}
bu işlemlerden sonra artık moment kütüphanesini index sayfanızda kullanabilirsiniz. Burada gördüğünüz gibi "moment" uygulama eklentisindeki sınıftır. Bu sınıfın metotlarını çağırdık.
Not: Moment ile zaman gösterimlerini bütün sayfa sayfalara uygulayacaksanız tek tek hepsine yazmak yerine bütün sayfalarınızı tek bir sayfadan türetin böylece moment kütüphanesi hepsinde olacaktır.
Yukarıdaki {% block script %}{% endblock %} block tanımı bootstrap/base.html sınıfından türettiğimiz için gelmiştir. Bootstrap eklentisinin base.html sayfasından türettiğinizde bazı block etiketleri varsayılan olarak gelirler. Örnek olarak base.html isminde bir sayfa oluşturalım bundan sonra tüm sayfaları bu sayfadan türetelim:
#base.html
{% extends 'bootstrap/base.html' %}
{% block head %}
{{super()}}
{% block title %} Uygulama ismi {% endblock %}
{% endblock %}
{% block navbar %}
<nav>
<ul>
<li><a href="" title="">Home</a></li>
</ul>
</nav>
{% endblock %}
{% block content%}
{% block page_content %} {% endblock %}
{% endblock %}
{% block scripts %}
{{super()}}
{{moment.include_moment()}} {{moment.lang('tr')}}
{% endblock %}
Yukarıdaki blocklar bootstrap/base.html sayfasında tanımlanmıştır. Bizim base.html sayfasını bu sınıftan türettiğimiz için artık bu bu blockları kalıtımla alabiliriz. Diğer sayfalarımızı bu base.html sayfamızdan türetip block içeriklerini sayfalarımızda değiştirebiliriz.
Flask moment eklentisi ile bir örnek yapalım:
from datetime import datetime
@app.route('/')
def index():
current_time = datetime.utcnow()
return render_template('index.html', current_time=current_time)
#index.html
{% extends 'base.html' %}
<p>{{moment(current_time).from_now(refresh=True)}} önce paylaşıldı</p>