跳转到主要内容

适用于移动设备的Django管理界面。

项目描述

这是Django用于iPhone/iPod touch或Blackberry等移动设备的替代管理界面。有些人称之为主题或皮肤,但实际上它远不止于此。

它几乎包含了常规Django管理界面的所有功能,并带来了您需要添加对任意设备支持的 everything。

希望您喜欢它。

下载 & 安装

从应用程序网站获取源代码

http://code.google.com/p/django-mobileadmin/

要安装 mobileadmin,请按照以下步骤操作

  1. 遵循 INSTALL.txt 文件中的说明

  2. 'mobileadmin' 添加到您的Django站点 INSTALLED_APPS 设置中。它可能看起来像这样

    INSTALLED_APPS = (
       # ...
       'mobileadmin',
    )
  3. 确保您已安装了管理贡献应用。

  4. '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(子)类。

  1. 在您的根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

  2. 扩展urlpatterns以将默认的MobileAdminSite实例与您喜欢的URL挂钩,例如/ma/。添加

    urlpatterns += patterns('',
        (r'^ma/(.*)', mobileadmin.sites.site.root),
    )

    mobileadmin现在正在复制所有常规管理功能,并使用适用于您使用的移动设备的模板。

  3. 在您的URLConf中将handler404handler500变量设置为mobileadmin提供的视图

    handler404 = 'mobileadmin.views.page_not_found'
    handler500 = 'mobileadmin.views.server_error'

    这是必需的,以便根据您移动设备上的浏览器用户代理加载404.html500.html模板。它自动回退到Django的默认错误处理器

扩展 mobileadmin

mobileadmin附带一组默认模板和模式,用于识别不同的设备和平台

  • Mobile Safari(iPhone/iPod touch)

但它是为了扩展而设计的。

由于模板加载取决于请求客户端的用户代理,mobileadmin告诉Django在尝试渲染默认管理视图时查找三个模板

  1. mobileadmin/USER_AGENT_NAME/VIEW_TEMPLATE.html

  2. mobileadmin/VIEW_TEMPLATE.html

  3. admin/index.html

..其中

  • USER_AGENT是用户代理的简称

  • VIEW_TEMPLATE是渲染模板的名称

例如,如果您尝试使用iPhone访问登录视图,将会尝试加载以下三个模板

  1. mobileadmin/mobile_safari/login.html

  2. mobileadmin/login.html

  3. 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_MAPPINGUSER_AGENTS设置。

from mobileadmin import sites

class MyMobileAdminSite(sites.MobileAdminSite):
    # define here whatever function you want
    pass

但是,如果您想使用mobileadmin根据用户代理更改模板的能力,您需要修改一下您的管理类。

幸运的是,mobileadmin附带了一个装饰器,可以在AdminSiteModelAdmin方法上使用,根据当前用户代理使用模板映射来更改该方法的模板,该映射可以在mobileadmin/conf/settings.py中的TEMPLATE_MAPPING变量中找到。

这些映射由装饰器mobile_templates使用,并将它们应用于您的AdminSiteModelAdmin的相应方法,例如

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 的 ModelAdminInlineModelAdminAdminSite 类的子类,这些子类包含了使其工作所需的所有功能。

就像使用基类一样使用它,例如:

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 (30.9 kB 查看散列

上传时间

由以下支持