一组templatetags,允许您以简单且不干扰的方式在页面前端编辑模型数据。
项目描述
django-frontendadmin
django-frontendadmin是一组templatetags,允许您以简单且不干扰的方式在页面前端编辑模型数据。
示例项目
此包提供了一个简单的示例项目,一个带有评论的博客。以下是如何快速启动此项目的快速指南
打开您的终端并切换到django-frontendadmin/example_project/目录。
$ ./manage.py syncdb 并创建一个超级用户。
$ ./manage.py runserver 并将您的浏览器指向http://127.0.0.1:8000/admin/。
使用您在步骤2中提供的用户名/密码进行身份验证。
转到主页http://127.0.0.1:8000/并开始玩耍。
在冰箱里放些啤酒并叫我。:-)
快速安装说明
将frontendadmin添加到您的django项目的settings.py中的INSTALLED_APPS。
将django.core.context_processors.request添加到您的django项目的settings.py中的TEMPLATE_CONTEXT_PROCESSORS。如果此功能不可用(默认从某天开始),请将此片段添加到您的设置中
TEMPLATE_CONTEXT_PROCESSORS = ( 'django.core.context_processors.request', 'django.core.context_processors.auth', 'django.core.context_processors.debug', 'django.core.context_processors.i18n', 'django.core.context_processors.media', )
在urlsconf中包含frontendadmin urls
(r'^frontendadmin/', include('frontendadmin.urls')),
在您想要使用前端amin链接的每个模板中加载frontendadmin_tags库。(见下文)
{% load frontendadmin_tags %}
有三种模板标签可以用于创建、更改或删除对象
{% frontendadmin_add queryset_of_objects label_for_link %} {% frontendadmin_change object_to_change label_for_link %} {% frontendadmin_delete object_to_delete label_for_link %}
假设您有一个weblog应用并使用generic-views,那么您的模板可能如下所示
{% for entry in object_list %} <div> <h2>{{ entry.title }}</h2> {{ entry.body }} <div> {% endfor %}
前端admin的正确实现
{% frontendadmin_add object_list %} {% for entry in object_list %} <div> <h2>{{ entry.title }}</h2> {{ entry.body }} {% frontendadmin_change entry %} {% frontendadmin_delete entry %} <div> {% endfor %}
自定义标签可以作为任何标签的最后一个参数使用
{% frontendadmin_add object_list 'Post an entry' %} {% for entry in object_list %} <div> <h2>{{ entry.title }}</h2> {{ entry.body }} {% frontendadmin_change entry 'Edit this entry' %} {% frontendadmin_delete entry 'Remove it permanently' %} <div> {% endfor %}
就这些。Frontendadmin将自动检查当前用户是否有对给定模型的添加/更改/删除权限。
Frontendadmin使用jquery库内置了ajax支持。详细信息请参阅模板源代码。
自定义配置
如果与您要使用的模型注册,则将使用管理表单。如果您有一个名为EntryAdmin的模型管理器已注册在django.contrib.admin.site上,则Frontendadmin将使用与EntryAdmin.Meta.form指定的任何关联表单。
您还可以为特定模型设置要使用的表单。这些表单可能位于您的代码库中,或位于您的python路径上的任何位置。这对于自定义小部件,如分割日期时间字段和所见即所得编辑器非常有用。设置以下设置指令以查看自定义表单的实际效果
FRONTEND_FORMS = { 'blog.entry': 'blog.forms.EntryForm', }
在本例中,位于blog应用中的entry模型将通过位于blog.forms模块中的EntryForm进行渲染。字典的键是app_label . model_name,并且必须是全部小写。字典的值是module_name . form_class,并且必须匹配实际模块的大小写。
您可以在设置内部为每个模型定义要包含或排除的字段。以下是一个片段,该片段阻止用户更改其个人资料中的user字段,并限制他们只能编辑他们应该能够编辑的信息
FRONTEND_EXCLUDES = { 'profiles.userprofile': ('user',) } FRONTEND_INCLUDES = { 'profiles.userprofile': ('address1','address2','avatar') }
这将包括address1、address2和avatar字段,并将user字段从表单中排除。请注意,两个字典的键都是app_label . model_name,并且必须是全部小写。
如果存在,将默认使用自定义表单模板。对于应用blog中的名为entry的模型,前端admin将尝试使用frontendadmin/blog_entry_form.html作为完整表单,并使用frontendadmin/blog_entry_form_ajax.html作为ajax表单。如果它们不存在,则将使用默认设置。
许可证
本应用程序根据New BSD License许可。有关详细信息,请参阅LICENSE文件。