xadmin引入样式无效

当使用下面方式引入xadmin样式的时候发现并没有效果:

file:adminx.py

xadminxadmin views

BaseSetting():    enable_themes = use_bootswatch = Some Codes...xadmin.site.register(views.CommAdminViewGlobalSettings)

file:__init__.py

default_app_config = "users.apps.UsersConfig"

错误原因:

当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.

在xadmin的源码目录下修改xadmin\plugins\themes.py:

#coding:utf-8from __future__ import print_functionimport httplib2from django.template import loaderfrom django.core.cache import cachefrom django.utils import sixfrom django.utils.translation import ugettext as _from xadmin.sites import sitefrom xadmin.models import UserSettingsfrom xadmin.views import BaseAdminPlugin, BaseAdminViewfrom xadmin.util import static, jsonimport sixif six.PY2:    import urllibelse:    import urllib.parseimport requestsTHEME_CACHE_KEY = 'xadmin_themes'

class ThemePlugin(BaseAdminPlugin):

    enable_themes = False    # {'name': 'Blank Theme', 'description': '...', 'css': 'http://...', 'thumbnail': '...'}    user_themes = None    use_bootswatch = False    default_theme = static('xadmin/css/themes/bootstrap-xadmin.css')    bootstrap2_theme = static('xadmin/css/themes/bootstrap-theme.css')

    def init_request(self, *args, **kwargs):        return self.enable_themes

    def _get_theme(self):        if self.user:            try:                return UserSettings.objects.get(user=self.user, key="site-theme").value            except Exception:                pass        if '_theme' in self.request.COOKIES:            if six.PY2:                func = urllib.unquote            else:                func = urllib.parse.unquote            return func(self.request.COOKIES['_theme'])        return self.default_theme

    def get_context(self, context):        context['site_theme'] = self._get_theme()        return context

    # Media    def get_media(self, media):        return media + self.vendor('jquery-ui-effect.js', 'xadmin.plugin.themes.js')

    # 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:                    # 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']                    # ex_themes.extend([                    #     {'name': t['name'], 'description': t['description'],                    #         'css': t['cssMin'], 'thumbnail': t['thumbnail']}                    #     for t in watch_themes])                    flag = False  # 假如为True使用原来的代码,假如为Flase,使用requests库来访问                    if flag:                        h = httplib2.Http()                        resp, content = h.request("http://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)

然后就可以调出企业常用的各种主题样式了。

原文地址:http://blog.51cto.com/xvjunjie/2084672

时间: 2024-10-10 22:27:11

xadmin引入样式无效的相关文章

line-height样式无效,文字不能居中

line-height样式无效 这是为什么  捣鼓了好久都没找到原因 <!doctype html> <html> <head> <meta charset="utf-8"> <title>淘宝</title> <link href="images/taobao.jpg" > <style type="text/css"> *{ margin:0; p

vue中引入样式文件

一.在vue中使用scss 首先进行安装如下依赖: cnpm i sass-loader node-sass -D 二.vue中引入样式文件 1)在index.html模板html文件中引入,这种方式引入的原样编译在生成的html文件中,如果想要通过link引入外部的样式文件,建议使用这种方式: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>2imis&

织梦channel标签currentstyle样式无效不起作用

我们在用织梦系统制作网站时,经常会用到channel标签来调子栏目.但是,很多朋友会遇到这种情况在使用channel标签来调子栏目的时候,指定 “type=son typeid=x” 发现currentstyle无效.今天笔者就跟大家分享一下解决方法. 1.解决channel标签currentstyle样式无效不起作用的错误方法 代码如下: 1 {dede: type='son' typeid='12' current~typename~">~typename~</a> <

CSS学习摘要-引入样式

CSS学习摘要-引入样式 注:主要是摘录自MDN 网络开发者这个网站的. CSS 实际上如何工作? 当浏览器显示文档时,它必须将文档的内容与其样式信息结合.它分两个阶段处理文档: 浏览器将 HTML和 CSS转化成 DOM(文档对象模型).DOM在计算机内存中表示文档.它把文档内容和其样式结合在一起. 浏览器显示 DOM 的内容. 如何将你的 CSS 应用到你的 HTML 上 这有你常见的三种不同方式将 CSS 应用到 HTML 文档上,有的方式比其他方式更有用.在这里,我们将简要回顾一下每一种

django入门8之xadmin引入富文本和excel插件

django入门8之xadmin引入富文本和excel插件 Xadmin引入富文本 插件的文档 https://xadmin.readthedocs.io/en/docs-chinese/make_plugin.html Django ueditor插件的安装 下载地址:https://github.com/zhangfisher/DjangoUeditor 进入mxonline的虚拟环境 Python setup.py install 进行安装 在settings.py中引入ueditor 在

web前端入门到实战:@import和link引入样式的区别

关于@import和link引入样式的区别网上有很多种说法.大致有如下几种,不过这其中会有我存疑的地方,我们可以一起来探讨一下. 区别 1.从属关系区别 @import是 CSS 提供的语法规则,只有导入样式表的作用:link是HTML提供的标签,不仅可以加载 CSS 文件,还可以定义 RSS.rel 连接属性等. 2.加载顺序区别 加载页面时,link标签引入的 CSS 被同时加载: @import 引入的 CSS 将在页面加载完毕后被加载. 3.兼容性区别 @import是 CSS2.1 才

引入样式表(css)的四种方式

一.使用style属性: 将style属性直接加在html标签里. <标签 style="属性1: 设定值1; 属性2: 设定值2; "> 例如: <td style="color:blue;font-size:9pt;font-family:'黑体';line-height:150%;"> 这种用法的优点 是可灵巧应用样式于各标签中,但是缺点则是没有整篇文件的『统一性』.二.使用style标签: 将样式规则写在<style>..

006 引入样式

开始css的复习. 一:引入css样式表 1.分类 内部样式表 行内式(内联样式) 外联样式(外联式) 2.内联样式 style=“” 3.案例 自己查找书写位置. 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Document</title> 6 </head> 7 &

xadmin引入django-import-export导入功能

一.安装 由于xadmin自带的包里面已经包含了django-import-export 所以不用再pip install django-import-export了 但是xadmin管理后台只有导出按钮 没有导入按钮 所以本次引入了导入功能 二.配置文件 demo/settings.py: import os # Build paths inside the project like this: os.path.join(BASE_DIR, ...)BASE_DIR = os.path.dir