django 重写admin下chang_list.html
时间: 2024-05-08 12:20:56 浏览: 336
重写 Django Admin 的 changelist 页面有两种方式:
1. 使用自定义模板
在你的 `admin` 应用的模板目录下(通常是 `templates/admin/`),创建一个名为 `change_list.html` 的模板文件,该文件将会被 Django Admin 使用来渲染 changelist 页面。在这个模板中,你可以添加自己的 HTML 和 JavaScript 代码,来扩展和修改 Django Admin 的显示效果。
2. 使用自定义视图
你可以创建一个自定义的视图函数,来代替 Django Admin 默认的 changelist 视图。具体来说,你需要在你的 `admin.py` 文件中,定义一个新的 `ModelAdmin` 子类,并重写它的 `changelist_view` 方法,来返回你自己的 changelist 页面。
举个例子,假设你的模型是 `MyModel`,你可以这样来重写 changelist 视图:
```python
from django.contrib import admin
from django.shortcuts import render
from .models import MyModel
class MyModelAdmin(admin.ModelAdmin):
def changelist_view(self, request, extra_context=None):
if not extra_context:
extra_context = {}
extra_context['my_custom_var'] = 'Hello, World!'
return render(request, 'my_custom_changelist.html', extra_context)
admin.site.register(MyModel, MyModelAdmin)
```
在这个例子中,我们定义了一个 `MyModelAdmin` 类,它继承了 Django Admin 的 `ModelAdmin` 类。我们重写了它的 `changelist_view` 方法,来返回我们自己的模板页面 `my_custom_changelist.html`。我们还在这个方法中,添加了一个名为 `my_custom_var` 的变量,它的值是字符串 `'Hello, World!'`。这个变量可以在我们的模板中使用。
注意,我们在 `changelist_view` 方法中传递了一个额外的 `extra_context` 参数。这个参数是一个字典,它包含了你希望传递给模板的额外变量。在我们的例子中,我们把 `my_custom_var` 添加到了这个字典中,并将它传递给了模板。
阅读全文