Django1.9开发博客(14)- 集成Xadmin

xadmin是一个django的管理后台实现,使用了更加灵活的架构设计及Bootstrap UI框架, 目的是替换现有的admin,国人开发,有许多新的特性:

  • 兼容 Django Admin
  • 使用 Bootstrap 作为 UI 框架
  • 编辑页面灵活布局
  • 主页面仪表盘及小部件
  • 过滤器强化
  • 数据导出
  • 强大的插件机制

与django的集成

本篇以simpleblog项目为例,介绍下怎样在django中集成xadmin

python2.7环境切换

注意,前面的教程都是在python3.4环境下开放的。 而目前为止xadmin还只能支持python2,所以我们要在此项目基础上新建一个分支py27, 然后我们创建一个python2.7的virtual environment,切换到此环境下面即可。

添加依赖

在requirements.txt中添加如下的依赖,注意:要用到xadmin的django1.9分支

django-reversion==1.8.5xlwt==0.7.5git+https://github.com/sshwsfc/[email protected]

修改settings.py

增加xadmin的配置如下

12345678910111213
ADMINS = (    # (‘Your Name‘, ‘[email protected]‘),)MANAGERS = ADMINS

# Application definitionINSTALLED_APPS = (    # ...    ‘xadmin‘,    ‘crispy_forms‘,    ‘reversion‘,    # ...)

添加/xadmin的链接

修改mysite/urls.py如下

123456789101112
#!/usr/bin/env python# -*- encoding: utf-8 -*-from django.conf.urls import patterns, include, url# version模块自动注册需要版本控制的 Modelfrom xadmin.plugins import xversionxversion.register_models()

urlpatterns = patterns(    ‘‘,    url(r‘xadmin/‘, include(xadmin.site.urls), name=‘xadmin‘),    # ...)

创建adminx.py

在blog/目录下创建adminx.py,内容如下

123456789101112131415161718192021222324252627282930313233343536373839404142
#!/usr/bin/env python# -*- encoding: utf-8 -*-"""Topic: adminx定制类Desc :"""import xadminimport xadmin.views as xviewsfrom .models import Tag, Category, Post, Comment, Evaluate, Pagefrom xadmin.layout import Main, TabHolder, Tab, Fieldset, Row, Col, AppendedText, Side

class BaseSetting(object):    enable_themes = True    use_bootswatch = Truexadmin.site.register(xviews.BaseAdminView, BaseSetting)

class AdminSettings(object):    # 设置base_site.html的Title    site_title = ‘博客管理后台‘    # 设置base_site.html的Footer    site_footer = ‘Winhong Inc.‘    menu_style = ‘default‘

    # 菜单设置    def get_site_menu(self):        return (            {‘title‘: ‘博客管理‘, ‘perm‘: self.get_model_perm(Page, ‘change‘), ‘menus‘: (                {‘title‘: ‘所有页面‘, ‘icon‘: ‘fa fa-vimeo-square‘                    , ‘url‘: self.get_model_url(Page, ‘changelist‘)},                {‘title‘: ‘分类目录‘, ‘icon‘: ‘fa fa-vimeo-square‘                    , ‘url‘: self.get_model_url(Category, ‘changelist‘)},            )},        )xadmin.site.register(xviews.CommAdminView, AdminSettings)

xadmin.site.register(Page)xadmin.site.register(Category)# xadmin.site.register(Tag)# xadmin.site.register(Post)# xadmin.site.register(Comment)# xadmin.site.register(Evaluate)

在这里,我们将所有的model都注册到xadmin中去,这样后台就能自动管理它们了。 并且自定义了后台的一些菜单、标题等等。具体的定制方法可以参考xadmin的官方文档。

添加管理后台链接

mysite/templates/mysite/base.html模板中添加/xamdin的管理后台链接:

<div id="meta-2" class="widget widget_meta">    <h3>功能</h3>    <ul>        {% if user.is_superuser %}        <li><a href="/xadmin">管理站点</a></li>        {% endif %}        {% if user.is_authenticated %}        <li>            <a href="{% url ‘django.contrib.auth.views.logout‘ %}">登出</a>        </li>        {% else %}        <li>            <a href="{% url ‘django.contrib.auth.views.login‘ %}">登录</a>        </li>        {% endif %}        <li><a href="#">文章<abbr title="RSS">RSS</abbr></a></li>    </ul></div>

自定义后台登陆页面

新建mysite/templates/registration/login.html模板,将xadmin模块中的login.html复制过来, 修改其内容,改成自己想要的形式即可

1234567891011121314151617181920212223242526272829303132333435
{% load staticfiles %}{% load i18n %}<html><head>    <meta name="viewport"          content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0">    <meta name="description" content="">    <meta name="author" content="">    <meta name="robots" content="NONE,NOARCHIVE">    <title>用户登录 - SimpleBlog</title>    <!--...中间省略...-->    <script type="text/javascript" src="{% static ‘xadmin/vendor/jquery/jquery.js‘ %}"></script></head><body class="login"><div class="container">    <form method="post" action="{% url ‘django.contrib.auth.views.login‘ %}">        {% csrf_token %}        <div class="panel panel-default panel-single" id="panel-login">            <div class="panel-heading">                <h2 class="form-signin-heading">请登录</h2>            </div>            <!--...中间省略...-->        </div>    </form>

</div><!--...中间省略...--><script type="text/javascript" src="{% static ‘xadmin/js/xadmin.main.js‘ %}"></script><script type="text/javascript" src="{% static ‘xadmin/js/xadmin.responsive.js‘ %}"></script><script type="text/javascript"        src="{% static ‘xadmin/vendor/jquery-ui/jquery.ui.effect.js‘ %}"></script><script type="text/javascript" src="{% static ‘xadmin/js/xadmin.plugin.themes.js‘ %}"></script>

</body></html>

这些完成后,我们打开应用,访问管理站点链接,应该可以看到如下的登录页面

登录后的效果

时间: 2025-01-05 03:57:03

Django1.9开发博客(14)- 集成Xadmin的相关文章

Django1.7开发博客

转自: http://www.pycoding.com/articles/category/django 基于最新的django1.7写的,通俗易懂,非常适合新手入门. 感谢博主! 参考教程: http://tutorial.djangogirls.org/ GitHub项目地址: https://github.com/yidao620c/simpleblog Heroku演示地址: https://yidaoblog.herokuapp.com/   教程目录: 使用Django1.7开发博客

Django1.9开发博客(12)- i18n国际化

国际化与本地化的目的为了能为各个不同的用户以他们最熟悉的语言和格式来显示网页. Django能完美支持文本翻译.日期时间和数字的格式化.时区. 另外,Django还有两点优势: 允许开发者和模板作者指定他们哪些app应该被翻译或被格式化为本地形式. 允许用户根据自己的偏好来实现本地化显示.翻译依据语言,格式化依据国家, 这些信息由浏览器中的Accept-Language头来决定.不过目前为止时区还未能实现. 参考官方文档:https://docs.djangoproject.com/en/1.9

Django1.9开发博客(8)- 继续完善

到现在为止我们已经完成的差不多了,并且基本的东西都已经学到了,是时候用起来了. 我们的博客还有很多功能需要完善,下面抛砖引玉新增几个功能,还有其他功能等你自己去发现和实现. 草稿箱 之前我们新建文章的时候只是是保存到数据库,也就是仅仅保存了草稿,还没有对外发布, 在博客首页上面是看不到的,因为published_date字段为空.这里我们需要添加一个草稿箱的链接.还是四部曲. 第一步,添加一个链接: 打开mysite/templates/mysite/base.html文件,在 1 <h1>&

Django1.9开发博客(11)- 富文本与代码高亮

TinyMCE是一个轻量级的基于浏览器的所见即所得编辑器,支持目前流行的各种浏览器,由JavaScript写成. 功能配置灵活简单(两行代码就可以将编辑器嵌入网页中),支持AJAX.另一特点是加载速度非常快. django里引用TinyMCE富文本编辑器,其实很简单,前提是你知道django的静态文件配置. 其实这个我已经在前面文章提到过,可以回去再看看. TinyMCE的官方网站是:http://www.tinymce.com/ 下载地址:http://download.moxiecode.c

Django1.9开发博客(10)- 全文搜索

Django本身不提供全文检索的功能,但django-haystack为其提供了全文检索的框架. django-haystack能为Django提供whoosh,solr,Xapian和Elasticsearc四种全文检索引擎作为后端. 其中whoosh为纯python的实现,不是非常大型的应用,是没有问题的. 本文将介绍Django1.9中通过django-haystack与whoosh集成以及whoosh的中文支持. 安装依赖: pip install django-haystackpip

Django1.9开发博客(13)- redis缓存

Redis 是一个高性能的key-value数据库.redis的出现, 很大程度补偿了memcached这类keyvalue存储的不足,在部分场合可以对关系数据库起到很好的补充作用. 它提供了Python,Ruby,Erlang,PHP客户端,使用很方便. 目前Redis已经发布了3.0版本,正式支持分布式,这个特性太强大,以至于你再不用就对不住自己了. 性能测试 服务器配置:Linux 2.6, Xeon X3320 2.5Ghz SET操作每秒钟110000次,GET操作每秒钟81000次

Django1.9开发博客(9)- 用户认证

你应该注意到了一点,当你去新建.修改和删除文章的时候并不需要登录,这样的话任何浏览网站的用户都能随时修改和删除我的文章.这个可不是我想要的! 编辑和删除的认证 我们需要保护post_new, post_edit和post_publish这三个视图,只有登录用户才有权去执行. django为我们提供了很好的帮助类,其实就是利用了python中的decorators技术. django中认证的装饰器位于模块django.contrib.auth.decorators中,名称叫login_requir

Django1.9开发博客(6)- 模板继承

模板继承就是网站的多个页面可以共享同一个页面布局或者是页面的某几个部分的内容.通过这种方式你就需要在每个页面复制粘贴同样的代码了. 如果你想改变页面某个公共部分,你不需要每个页面的去修改,只需要修改一个模板就行了,这样最大化复用,减少了冗余,也减少了出错的几率,而且你敲的代码也少了. 创建一个base模板 一个base模板就是你全站所有页面都会继承的最基本的网站框架模板.我们在blog/templates/blog/中创建一个base.html模板: blog └───templates └──

文顶顶iOS开发博客链接整理及部分项目源代码下载

文顶顶iOS开发博客链接整理及部分项目源代码下载 网上的iOS开发的教程很多,但是像cnblogs博主文顶顶的博客这样内容图文并茂,代码齐全,示例经典,原理也有阐述,覆盖面宽广,自成系统的系列教程却很难找.如果你是初学者,在学习了斯坦福iOS7公开课和跟着文顶顶的博客做项目之后,最快只需要2个月时间,就基本可以独立完成iOS App的开发工作.有经验的开发者也可以在该博客中寻找代码片段进行学习借鉴,必有所收获. 在此也向@文顶顶 表示严重感谢! 由于文顶顶博客博文繁多,每次找文章需要频繁的翻页,