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)