适用于移动设备的Django管理界面。
项目描述
这是Django用于iPhone/iPod touch或Blackberry等移动设备的替代管理界面。有些人称之为主题或皮肤,但实际上它远不止于此。
它几乎包含了常规Django管理界面的所有功能,并带来了您需要添加对任意设备支持的 everything。
希望您喜欢它。
下载 & 安装
从应用程序网站获取源代码
http://code.google.com/p/django-mobileadmin/
要安装 mobileadmin,请按照以下步骤操作
遵循 INSTALL.txt 文件中的说明
将 'mobileadmin' 添加到您的Django站点 INSTALLED_APPS 设置中。它可能看起来像这样
INSTALLED_APPS = ( # ... 'mobileadmin', )
确保您已安装了管理贡献应用。
将 'mobileadmin.context_processors.user_agent' 添加到您的 TEMPLATE_CONTEXT_PROCESSORS 设置中。它应该看起来像这样
TEMPLATE_CONTEXT_PROCESSORS = ( 'django.core.context_processors.auth', 'django.core.context_processors.debug', 'django.core.context_processors.i18n', 'django.core.context_processors.media', 'django.core.context_processors.request', 'mobileadmin.context_processors.user_agent', )
使用
由于 mobileadmin 遵循Django管理界面的理念,您可以轻松重用现有的管理设置
您使用默认或自定义ModelAdmin类为每个模型,您想要在管理界面中可编辑,并使用您的URLconf连接Django的默认AdminSite实例。
如果情况是这样,您可以通过使用mobileadmin的独立管理站点实例和其autoregister()函数来重用这些ModelAdmin(子)类。
在您的根URLconf中——在Django的admin.autodiscover()调用行下方——导入mobileadmin并调用函数mobileadmin.autoregister()
# urls.py from django.conf.urls.defaults import * from django.contrib import admin admin.autodiscover() import mobileadmin mobileadmin.autoregister() urlpatterns = patterns('', ('^admin/(.*)', admin.site.root), )
这将注册您的现有管理配置到mobileadmin。
扩展urlpatterns以将默认的MobileAdminSite实例与您喜欢的URL挂钩,例如/ma/。添加
urlpatterns += patterns('', (r'^ma/(.*)', mobileadmin.sites.site.root), )
mobileadmin现在正在复制所有常规管理功能,并使用适用于您使用的移动设备的模板。
在您的URLConf中将handler404和handler500变量设置为mobileadmin提供的视图
handler404 = 'mobileadmin.views.page_not_found' handler500 = 'mobileadmin.views.server_error'
这是必需的,以便根据您移动设备上的浏览器用户代理加载404.html和500.html模板。它自动回退到Django的默认错误处理器。
扩展 mobileadmin
mobileadmin附带一组默认模板和模式,用于识别不同的设备和平台
Mobile Safari(iPhone/iPod touch)
但它是为了扩展而设计的。
由于模板加载取决于请求客户端的用户代理,mobileadmin告诉Django在尝试渲染默认管理视图时查找三个模板
mobileadmin/USER_AGENT_NAME/VIEW_TEMPLATE.html
mobileadmin/VIEW_TEMPLATE.html
admin/index.html
..其中
USER_AGENT是用户代理的简称
VIEW_TEMPLATE是渲染模板的名称
例如,如果您尝试使用iPhone访问登录视图,将会尝试加载以下三个模板
mobileadmin/mobile_safari/login.html
mobileadmin/login.html
admin/index.html
..其中mobile_safari是默认设备模式之一,而login.html是所需的模板。
创建自定义 mobileadmin 设置
您可以通过在settings.py文件中添加MOBILEADMIN_USER_AGENTS来支持更多的用户代理——由一个简称和一个匹配用户代理字符串的正则表达式组成
MOBILEADMIN_USER_AGENTS = { 'my_user_agent': r'.*MyUserAgent.*', }
有了这个,它会自动检查正则表达式是否与当前请求的用户代理匹配,如果是,则尝试在访问登录页面时加载模板mobileadmin/my_user_agent/login.html,如果找不到,则回退到my_user_agent/login.html,然后是admin/login.html。
如果您想了解默认的正则表达式,请查看mobileadmin/conf/settings.py中的TEMPLATE_MAPPING。
mobileadmin附带了一个MobileAdminSite和一个MobileModelAdmin类,它们直接使用默认的TEMPLATE_MAPPING和USER_AGENTS设置。
from mobileadmin import sites class MyMobileAdminSite(sites.MobileAdminSite): # define here whatever function you want pass
但是,如果您想使用mobileadmin根据用户代理更改模板的能力,您需要修改一下您的管理类。
幸运的是,mobileadmin附带了一个装饰器,可以在AdminSite或ModelAdmin方法上使用,根据当前用户代理使用模板映射来更改该方法的模板,该映射可以在mobileadmin/conf/settings.py中的TEMPLATE_MAPPING变量中找到。
这些映射由装饰器mobile_templates使用,并将它们应用于您的AdminSite或ModelAdmin的相应方法,例如
from django.contrib.admin import sites from mobileadmin.decorators import mobile_templates class MyAdminSite(sites.AdminSite): def index(self, request, extra_context=None): # self.index_template is already automatically set here # do something cool here return super(MyAdminSite, self).index(request, extra_context) index = mobile_templates(index)
此外,默认映射可以在您的site settings.py中进行扩展
MOBILEADMIN_TEMPLATE_MAPPING = { 'index': ('index_template', 'index.html'), }
..其中
index是函数的名称,其类属性和
index_template(方法类的属性)将设置为文件 index.html。
使用自定义移动管理界面
如果您创建了您自己的移动管理界面,您可以使用 mobileadmin 的 Django 的 ModelAdmin、InlineModelAdmin 和 AdminSite 类的子类,这些子类包含了使其工作所需的所有功能。
就像使用基类一样使用它,例如:
from mobileadmin import options from myproject.myapp.models import Author class MobileAuthorAdmin(options.MobileModelAdmin): pass mobileadmin.sites.site.register(Author, MobileAuthorAdmin)
然后在您的 URLconf 中导入 mobileadmin 以实例化一个 MobileAdminSite 对象,使用 Django 的 autodiscover() 加载 INSTALLED_APPS admin.py 模块,并将 mobileadmin 的 URL 添加到 URLConf 中。
# urls.py from django.conf.urls.defaults import * from django.contrib import admin import mobileadmin admin.autodiscover() urlpatterns = patterns('', ('^admin/(.*)', admin.site.root), (r'^ma/(.*)', mobileadmin.sites.site.root), )
媒体路径
请随意使用一些小助手来找到 mobileadmin 的媒体目录的路径。如果您正在使用 Django(或任何其他 Python 软件)来提供静态文件(在生产环境中不应这样做),只需使用例如:
from mobileadmin.conf import settings mobileadmin_media_path = settings.MEDIA_PATH mobileadmin_media_prefix = settings.MEDIA_PREFIX
现在您已经拥有 mobileadmin 媒体目录的完整(平台无关)路径,变量 mobileadmin_media_path 中,以及 mobileadmin 媒体的默认 URL 前缀('/mobileadmin_media/')在 mobileadmin_media_prefix 中。就像 ADMIN_MEDIA_PREFIX 但用于 mobileadmin 应用程序的 media 目录。
当然,您可以选择在 Django 站点的 settings.py 文件中设置 MOBILEADMIN_MEDIA_PREFIX 来覆盖默认的 URL 前缀。请使用尾部斜杠。这使得更新 mobileadmin 对您来说更容易,因为您现在不必担心媒体目录的不同位置。
服务 mobileadmin 的静态媒体
尽管使用 Django 提供静态文件的功能在实时生产服务器上强烈不建议,但它可能有助于在测试或内部网站上启动 mobileadmin。只需将以下代码添加到 Django 站点的 URLConf(urls.py)中:
from mobileadmin.conf import settings urlpatterns += patterns('django.views.static', (settings.MEDIA_REGEX, 'serve', {'document_root': settings.MEDIA_PATH}), )
看看在启用您获得静态文件(MEDIA_REGEX)和平台无关的媒体文件文件系统路径(MEDIA_PATH)的片段中如何加载 mobileadmin 的自己的设置模块。
支持
请将您的 问题和问题 留在指定的 Google Code 网站 上。
项目详情
django-mobileadmin-0.5.2.tar.gz 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 2e16f4096dda14a9934cc49780a313ca0490264ca4939db03a4d4f7531656e60 |
|
MD5 | 596330f71c530bceeadf840786a27a5 |
|
BLAKE2b-256 | 8246af67de2c2f07d313f5afaf3e8f08398dcd2d2ac9a342b777f46c7e5b7dd5 |