Custom Pages
If you want to create a new page in your app, you can follow the steps below.
Create a View
superapp/apps/<app_name>/views.py
from django.contrib.auth.mixins import PermissionRequiredMixin
from django.views import View
class CustomPageView(PermissionRequiredMixin,View):
permission_required = ['app.can_view_custom_page']
def get(self, request, context, **kwargs):
# Your custom logic goes here
context = {
**context,
'message': 'This is a custom page!',
}
return render(request, 'app/custom_page.html', context)
Create template
superapp/apps/<app_name>/templates/custom_page.html
{% extends 'unfold/layouts/base.html' %}
{% load i18n unfold %}
{% block custom_breadcrumbs %}
{% trans 'Custom Page' as name %}
{% include 'unfold/helpers/breadcrumb_item.html' with link=link name=name %}
{% endblock %}
{% block content %}
Hello world: {{message}}
{% endblock %}
Update URL patterns
superapp/apps/<app_name>/urls.py
from superapp.apps.sample_app.views import CustomPageView
from django.urls import path
def extend_superapp_urlpatterns(main_urlpatterns):
pass
def extend_superapp_admin_urlpatterns(main_admin_urlpatterns):
main_admin_urlpatterns += [
{
"path": "",
"view": CustomPageView,
"name": "custom_page",
},
]
Add Navigation Link
superapp/apps/admin_portal/settings.py
from django.utils.translation import gettext_lazy as _
from django.urls import reverse_lazy
def extend_superapp_settings(main_settings):
# ...
main_settings['UNFOLD']['SIDEBAR'] = {
# ...
"navigation": [
{
"title": _("Navigation"),
# ...
"items": [
{
"title": _("Custom Page"),
"icon": "your_icon_here", # Icons from https://fonts.google.com/icons
"link": reverse_lazy("admin:custom_page"), # add url pattern here
},
]
}
]
}