DEV Community

Gahyun Son
Gahyun Son

Posted on

Add URLs to the list on the Admin Page Index.

In this post, I'll show you how to add a custom view URL to the list on the admin page index.
Here's what the result will look like:

Image description

I added a custom list to the index to apply the CSS style of the Django admin page.


Overriding 'app_list.html'

Step 1. Create the Template Directory

Create a directory /templates/admin in your Django Project. And create a file app_list.html in the directory.
The structure will look like below.

Django-Project ├── Dockerfile ├── README.md ├── app │ ├── projectname │ ├── core │ ├── manage.py │ ├── appname1 │ ├── templates │ │ └── admin │ │ ├── app_list.html │ └── appname2 
Enter fullscreen mode Exit fullscreen mode

Step 2. Find the Original app_list.html

Visit the Django GitHub repository.
Search for the 'app_list.html' file.

Step 3. Copy the Original Code

Copy the entire content of the 'app_list.html' file.

Step 4. Paste the Code into Your file

Paste the copied codes into your app_list.html file.

Step 5. Locate the Insertion Point

Let's see where could we insert our codes.

{% load i18n %} <!-- Insert your codes HERE! --> {% if app_list %} {% for app in app_list %} <div class="app-{{ app.app_label }} module{% if app.app_url in request.path|urlencode %} current-app{% endif %}"> <table> <caption> <a href="{{ app.app_url }}" class="section" title="{% blocktranslate with name=app.name %}Models in the {{ name }} application{% endblocktranslate %}">{{ app.name }}</a> </caption> <thead class="visually-hidden"> <tr> <th scope="col">{% translate 'Model name' %}</th> <th scope="col">{% translate 'Add link' %}</th> <th scope="col">{% translate 'Change or view list link' %}</th> </tr> </thead> 
Enter fullscreen mode Exit fullscreen mode

Step 6. Add Your Custom Code

I add codes like below. Be mindful of the class names and tags to ensure proper styling and functionality.

{% load i18n %} <div class="module"> <table> <caption> <a href="#" class="section" title="new-table">{% translate 'Custom Admin View' %}</a> </caption> <thead> <tr> <th scope="col">{% translate 'Create API List' %}</th> <th scope="col">.</th> <th scope="col">.</th> </tr> </thead> <tbody> <tr> <th scope="row"> <a href="{% url 'my-api' %}">Custom Admin View</a> </th> <th scope="row"><a>.</a></th> <th scope="row"><a>.</a></th> </tr> </tbody> </table> </div> {% if app_list %} {% for app in app_list %} 
Enter fullscreen mode Exit fullscreen mode

Top comments (0)