Hey there!
Hope you guys are doing well.
I am a student still in the final year of Under Graduation.Basically I am Familiar with python frameworks like Flask,Django and some of others,But I don’t have Good knowledge about Frappe.I Googled about it got to know about this community.
Hoping for a good explanation from you guys For a Student like me who is interested in learning different frameworks.
Thank you in advance.
Anything in specific?
Otherwise go through the website to understand more about the framework and apps built with the framework
1 Like
I can give some insight. Coming from Django and Flask/FastAPI Background here are things you should know
- Frappe is a Framework (Frameworks are different from Libraries in that you usually write code within “Callback” for frameworks.)
- ERPNext is Application built using Frappe
- Following used to be part of “Core ERPNext” but now lives as separate “Apps”. I believe this was done mostly for having decoupled “velocities” from ERPNext
- HR
- CRM
- Frappe does support Postgres. On the Other hand ERPNext I believe is right now tied to MariaDB (Because there are some insane number of SQL queries that might need to be migrated over)
Similarities to Django:
- Has built in ORM (Object Relationship Mapping)
- Support for Authentication
- Notion of “apps” that can be installed independently
- Now that Django 6 has been release: Both have built in Task queue support.
- Admin interface from Django is called Desk in Frappe
- Support for Jinja templating is present (although “Default Template” for Django is bit different)
- Production Setup for Django & Frappe apps are almost similar. They have component overlap:
1. Nginx
1. Supervisor
1. Gunicorn
Differences to Django:
- Frappe support multi-tenancy out of the box
- Both have notion of “site” but usage intention is different
- There is the “frontend” way of doing things (Javascript) and same set of things could be done via “backend” way (Python)
- The way you create models and apply migrations are worlds apart. For Django you actually have to make changes to
models.py file with Frappe it is achieved by making changes in the UI
- Way you write APIs is different:
1. Frappe has Resource and Method APIs
1. For Django you need to use something like DRF or Ninja
- Background Tasks in Django are usually written in Celery. Frappe uses rq
- Way One-to-One and Many-to-Many relations are defined are way different:
- What a
ForeignKey in Django, is Link in Frappe
ManyToManyField is loosely mapped to Child Table in Frappe
- Frappe has following unique aspects (again from out of the Box perspective):
- Print Formats
- Email Queue
- Roles & Permission mechanism
- Hooks
- Django is not built using WSGI web application library like Werkzeug
- Routing is done differently in Frappe. There is no
urls.py file - it uses routing mechanism similar to Flas/FastAPI which is usually a decorator.
Hope this helps
1 Like
Thnak You,That was brief and clear explanation.
1 Like