django使用xadmin的全局配置-themes不显示
2018-02-28 16:59
337 查看
背景:
xadmin采用源代码的方式引入到项目中
在xadmin使用的过程中,设置“use_bootswatch = True”,企图调出主题菜单,显示更多主题。然而设置了后,发现主题还是默认和bootstrap2首先需要在创建好的app中新建一个adminx.py的文件,然后添加代码
# _*_ coding: utf-8 _*_
import xadmin
from xadmin import views
class BaseSetting(object):
enable_themes=True
use_bootswatch=True
xadmin.site.register(views.BaseAdminView,BaseSetting)排错:
深入跟踪源代码,发现/xadmin/plugins/themes.py下的
xadmin采用源代码的方式引入到项目中
在xadmin使用的过程中,设置“use_bootswatch = True”,企图调出主题菜单,显示更多主题。然而设置了后,发现主题还是默认和bootstrap2首先需要在创建好的app中新建一个adminx.py的文件,然后添加代码
# _*_ coding: utf-8 _*_
import xadmin
from xadmin import views
class BaseSetting(object):
enable_themes=True
use_bootswatch=True
xadmin.site.register(views.BaseAdminView,BaseSetting)排错:
深入跟踪源代码,发现/xadmin/plugins/themes.py下的
block_top_navmenu当use_bootswatch 为True的时候,就会使用httplib2去
http://bootswatch.com/api/3.json网址获取主题菜单项。但是使用浏览器打开这个网址,http会被替换成https的。httplib2访问这个https的网址,就会报错。报错信息为:
[SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure这边使用requests库来替代httplib2
1.安装requests
pip install requests
2.在./xadmin/plugins/themes.py 引入requests
import requests
3.修改block_top_navmenu方法:
# Block Views def block_top_navmenu(self, context, nodes): themes = [ {'name': _(u"Default"), 'description': _(u"Default bootstrap theme"), 'css': self.default_theme}, {'name': _(u"Bootstrap2"), 'description': _(u"Bootstrap 2.x theme"), 'css': self.bootstrap2_theme}, ] select_css = context.get('site_theme', self.default_theme) if self.user_themes: themes.extend(self.user_themes) if self.use_bootswatch: ex_themes = cache.get(THEME_CACHE_KEY) if ex_themes: themes.extend(json.loads(ex_themes)) else: ex_themes = [] try: flag = False # 假如为True使用原来的代码,假如为Flase,使用requests库来访问 if flag: h = httplib2.Http() resp, content = h.request("https://bootswatch.com/api/3.json", 'GET', '', headers={"Accept": "application/json", "User-Agent": self.request.META['HTTP_USER_AGENT']}) if six.PY3: content = content.decode() watch_themes = json.loads(content)['themes'] else: content = requests.get("https://bootswatch.com/api/3.json") if six.PY3: content = content.text.decode() watch_themes = json.loads(content.text)['themes'] ex_themes.extend([ {'name': t['name'], 'description': t['description'], 'css': t['cssMin'], 'thumbnail': t['thumbnail']} for t in watch_themes]) except Exception as e: print(e) cache.set(THEME_CACHE_KEY, json.dumps(ex_themes), 24 * 3600) themes.extend(ex_themes) nodes.append(loader.render_to_string('xadmin/blocks/comm.top.theme.html', {'themes': themes, 'select_css': select_css})) site.register_plugin(ThemePlugin, BaseAdminView)
相关文章推荐
- Django使用xadmin进行全局的配置
- django使用xadmin的全局配置
- 第三百八十一节,Django+Xadmin打造上线标准的在线教育平台—xadmin全局配置
- Django xadmin全局配置
- 第三百八十七节,Django+Xadmin打造上线标准的在线教育平台—网站上传资源的配置与显示
- 配置与使用displaytag实现分页显示
- 使用全局热键显示隐藏窗体
- Hibernate全局配置文件中常用标记的使用
- Windows Phone 实用开发技巧(18):使用SystemTray显示全局消息提醒
- 保存网站或系统的全局配置使用JSON格式保存到文件更轻便!
- 使用PrefUtil设置全局配置
- 使用JTAG方式配置EPCS芯片时显示容量不够的解决方法
- 使用Capistrano向EC2部署Django代码--关于SSH相关的配置
- 【Mac使用基础】git config 全局配置,user.name和user.email 设置
- django中mysql配置及使用
- django之session使用的setting.py配置
- Dreamweaver 8 配置站點時无法使用您输入的前缀显示活动数据请查站点配置(http,錯誤401)
- Mysql:命令选项、配置选项、(全局、会话)系统变量、状态变量:如何使用系统变量?
- IE下用ReportView显示RDLC报表,提示“您的浏览器不支持脚本或已配置为不允许使用脚本”
- Control Study->AdRotator广告控件显示自定义配置文件中广告以及与DataGrid控件结合使用显示图片(示例代码下载)