我使用的是Django导入导出应用程序,现在我想添加Grappelli以改进Admin界面。我收到了与模板有关的错误。是否有任何建议让他们一起工作?
错误:
Environment:
Request Method: GET
Request URL: http://localhost:8000/admin/db_personal/personalinstituto/
Django Version: 1.7c1
Python Version: 2.7.8
Installed Applications:
('grappelli',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'import_export',
'db_personal')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware')
Template error:
In template C:\Gestion AI2\web_nueva\templates\admin\change_list.html, error at line 1
maximum recursion depth exceeded in __instancecheck__
1 : {% extends "admin/change_list.html" %}
2 :
3 : {# Original template renders object-tools only when has_add_permission is True. #}
4 : {# This hack allows sub templates to add to object-tools #}
5 : {% block object-tools %}
6 : <ul class="object-tools">
7 : {% block object-tools-items %}
8 : {% if has_add_permission %}
9 : {{ block.super }}
10 : {% endif %}
11 : {% endblock %}
答案 0 :(得分:1)
嗯,我认为您的问题不在模板脚本中,而是扩展。 您的模板会尝试扩展自己。
templates \ admin \ change_list.html,第1行的错误1:{%extends “admin / change_list.html”%}
admin / change_list.html是指基本的django模板change_list。您的django-import-export change_list模板似乎具有相同的路径。您的django-import-export中的change_list模板应该在 模板/管理/的 import_export 强> /change_list.html
答案 1 :(得分:0)
我一起使用它们很好。我必须在admin / includes_grappelli / header.html:
中更改此设置- {% url admin:password_change as password_change_url %}
+ {% url 'admin:password_change' as password_change_url %}
- {% url admin:logout as logout_url %}
+ {% url 'admin:logout' as logout_url %}
- {% url test-index as testindexurl %}
+ {% url 'test-index' as testindexurl %}
- {% url django-admindocs-docroot as docsroot %}
+ {% url 'django-admindocs-docroot' as docsroot %}
并使用ImportExportActionModelAdmin调用它以避免CSS问题。
from import_export.admin import ImportExportActionModelAdmin
class MyModelAdmin(ImportExportActionModelAdmin):
"""
Admin class for MyModel model
"""
form = MyModelAdminForm
list_display = ()
ordering = []
resource_class = MyModelResource
希望它有所帮助...
答案 2 :(得分:0)
我刚刚遇到了同样的问题,这是一个更加循序渐进的方法。
在项目中为import_export模板创建一个目录,并为change_list_import模板添加一个html文件。
myproj
├── myproj
│ ├──url.py
│ ├──settings.py
├── manage.py
├── db_personal #myapp
│ ├── admin.py
│ ├── models.py
| ├── viewss.py
├── templates
| ├── admin
| | ├── import_export
| | | ├── change_list_import.html
├── dashboard.py
接下来,在此模板html文件中复制以下代码。请注意,它需要扩展grappelli更改列表模板,因此引用此模板的位置:
{% extends "C:/Python27/lib/site-packages/grappelli/templates/admin/change_list.html" %}
{% load i18n %}
{% block object-tools-items %}
<li><a href="import/" class="import_link">{% trans "Import" %}</a></li>
{{ block.super }}
{% endblock %}
答案 3 :(得分:0)
grappelli必须在INSTALLED_APPS中的import_export之前。
引用自 https://django-grappelli.readthedocs.io/en/latest/thirdparty.html