Community Apps
Admin Portal
Custom Pages

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
                },
                ]
            }
        ]
    }