Django:进出口 && Grappelli
Django: import-export && Grappelli
我之前使用的是 Django 导入导出应用程序,现在我想添加 Grappelli 以改进管理界面。我收到与模板相关的错误。有什么让他们一起工作的建议吗?
错误:
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 %}
我把它们一起用很好。我不得不在 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
希望对您有所帮助...
好吧,我认为你的问题不在模板脚本中,而是在扩展中。
您的模板试图自我扩展。
templates\admin\change_list.html, error at line 1 1 : {% extends
"admin/change_list.html" %}
admin/change_list.html指的是基本的django模板change_list。看来您的 django-import-export change_list 模板具有相同的路径。来自 django-import-export 的 change_list 模板应该在
template/admin/import_export/change_list.html
我刚刚遇到了同样的问题,这里有一个更循序渐进的方法。
在您的项目中为 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 changelist模板,因此参考了这个模板的位置:
{% 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 %}
grappelli needs to be before import_export within INSTALLED_APPS.
引用自
https://django-grappelli.readthedocs.io/en/latest/thirdparty.html
我之前使用的是 Django 导入导出应用程序,现在我想添加 Grappelli 以改进管理界面。我收到与模板相关的错误。有什么让他们一起工作的建议吗?
错误:
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 %}
我把它们一起用很好。我不得不在 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
希望对您有所帮助...
好吧,我认为你的问题不在模板脚本中,而是在扩展中。 您的模板试图自我扩展。
templates\admin\change_list.html, error at line 1 1 : {% extends "admin/change_list.html" %}
admin/change_list.html指的是基本的django模板change_list。看来您的 django-import-export change_list 模板具有相同的路径。来自 django-import-export 的 change_list 模板应该在 template/admin/import_export/change_list.html
我刚刚遇到了同样的问题,这里有一个更循序渐进的方法。
在您的项目中为 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 changelist模板,因此参考了这个模板的位置:
{% 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 %}
grappelli needs to be before import_export within INSTALLED_APPS.
引用自 https://django-grappelli.readthedocs.io/en/latest/thirdparty.html