Goal
This post explains how we can add routes which resolve to a webpage.
Frappe installation provides several routes by default. Some of them are /about
/contact
, /newsletters
etc.
You might want your about page to be served from /about-us
and not only from /about
. Similarly you might want your contact page to be served fromm /contact-us
and not only from /contact
.
Setup
This post assumes that you have bench initialized and you are able to add a site to your frappe installation.
Let’s add a site
$ bench new-site foo.bar
Default behaviour
If you access foo.bar:8000/contact-us
, you would see a 404 page.
Adding rules
There is a hookpoint called website_route_rules
in hooks.py which allows adding route rules.
Create an app so that we have a hooks.py where we can add route.
$ bench new-app meeting # You could use any app name
$ bench --site foo.bar install-app meeting
Add a module level attribute website_route_rules
in meeting/meeting/hooks.py
website_route_rules = [
{'from_route': '/about-us', 'to_route': 'about'},
{'from_route': '/contact-us', 'to_route': 'contact'},
]
This would ensure that the About page which is otherwise only accessible from /about
is not also accessible from /about-us
. Similarly Contact page is served from both /contact
and /contact-us
.
Thank you for reading the Agiliq blog. This article was written by Akshar on Aug 8, 2018 in python , frappe , erpnext .
You can subscribe ⚛ to our blog.
We love building amazing apps for web and mobile for our clients. If you are looking for development help, contact us today ✉.
Would you like to download 10+ free Django and Python books? Get them here