Frappe Framework ve HTML

Frappe Framework kullanırken dinamik HTML sayfaları yaratabilmek için Jinja template’lerini kullanabilirsiniz.

Bunun için aynı dizine, aynı isimli .py ve .html sayfaları oluşturmalısınız. Python dosyanız “get_context” methodunu, HTML dosyanız Jinja Template’ini içermelidir.

Pyhton dosyamızda “get_context” methodu ile elde ettiğimiz değişkenleri HTML dosyamız içerisinde yer alan Jinja Template’imize döndürerek sayfamızı render edeceğiz.

Örneğin;

sample_page.py;

sample_page.html

Bu basit örnekte görüldüğü üzere python dosyamızda(sample_page.py) oluşturduğumuz değişkenleri HTML dosyamızın içerisinde(sample_page.html) render edebildik.

Frappe Bench Fonksiyonun Test Edilmesi

Bir python fonksiyonu yazdınız ve bench altında nasıl çalışacağını test etmek istiyorsunuz. Bu durumda aşağıdaki syntax kullanılarak fonksiyonu çağırabilirsiniz.

tabi bench komutunun çalışabilmesi için frappe-bench dizini altında olmalısınız.

"bench --site siteadi execute fonksiyon yolu"
Örn;
"bench --site erp.sirketim.com execute erpnext.modules.hr.doctypes.events.benimfonksiyonum"

Frappe Bench “Can’t connect to (‘127.0.0.1’, 8000)” Sorunu

Zaman zaman bench restart edildiğinde gunicorn servislerini durduramıyor. Bu nedenle gunicorn servisleri restart olamıyor ve uygulama yanıt vermemeye başlıyor.
Bu senaryoda web.error.log dosyasında gunicorn’un start edilemediğine dair logları görebilirsiniz.

==> web.error.log <==
[2023-11-17 10:44:20 +0300] [377891] [ERROR] Can't connect to ('127.0.0.1', 8000)
[2023-11-17 10:44:21 +0300] [377939] [INFO] Starting gunicorn 20.1.0
[2023-11-17 10:44:21 +0300] [377939] [ERROR] Connection in use: ('127.0.0.1', 8000)
[2023-11-17 10:44:21 +0300] [377939] [ERROR] Retrying in 1 second.
[2023-11-17 10:44:22 +0300] [377939] [ERROR] Connection in use: ('127.0.0.1', 8000)
[2023-11-17 10:44:22 +0300] [377939] [ERROR] Retrying in 1 second.

Çözüm;

Gunicorn servislerini zorla stop ettirmek ve bench’i tekrar başlatmak gerekiyor.

ps -A | grep gunicorn komutuyla çalışan gunicorn servislerinin pidleri alınabilir.
sudo kill pid1 pid2 pid3 komutuyla servisler zorla durdurulur(Zaman zaman işe yaramıyor killall ve pkill komutları ile de denenebilir.)
ps -A | grep gunicorn komutuyla servislerin durup durmadığı kontrol edilir.
bench restart komutu ile bench yeniden başlatılır.