解决Django部署设置Debug=False时xadmin后台管理系统样式丢失

对于使用Django框架开发的系统,当部署时设置settings.py文件中Debug=False时xadmin后台管理系统样式会丢失。

【问题原因】:

django的生产环境不同开发环境,在生产环境下(DEBUG=False),django.contrib.staticfiles 是不起任何作用的,也就说 django.contrib.staticfiles 只对开发环境(DEBUG=True)开启。所以会导致xadmin样式丢失现象。

【解决方案】:

①在settings.py中添加如下配置

STATIC_ROOT = os.path.join(BASE_DIR, 'static')

②修改主项目中的urls.py文件

urlpatterns = [
 path('xadmin/', xadmin.site.urls),
 //...
 re_path('static/(?P<path>.*)', serve, {'document_root':STATIC_ROOT}),
]

③在控制台执行如下命令,它会在根目录下生成static文件,里边存储的是xadmin的样式文件:

> collectstatic

此时Django的后台管理系统xadmin样式恢复原样~!

补充知识:django接入xadmin无法加载样式问题

xadmin装完,竟然没有样式,查看了网上发现以下几种解决办法:

1.官网:替换xadmin下的theme.py文件,失败。

2.修改settings.py,添加 STATIC_ROOT,失败。

STATIC_URL = '/static/'
#如果你设置相同,等运行collectstatic时会警告.
STATIC_ROOT = os.path.join(BASE_DIR, 'static')

这两种对我都无效,我自己找到这种方法:

修改settings.py文件,debug改为true,成功解决。

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True

以上这篇解决Django部署设置Debug=False时xadmin后台管理系统样式丢失就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • django xadmin 管理器常用显示设置方式

    课程管理器: class CourseAdmin(object): # 设置列表显示字段 list_display = ['name', 'course_org', 'detail','degree','learn_times','students','fav_nums','image','click_nums','add_time'] # 设置列表查询字段 search_field = ['name', 'course_org', 'detail','degree','learn_times'

  • Django admin 实现search_fields精确查询实例

    我就废话不多说了,还是直接看代码吧! search_fields = (u'gift_rule_id',u'user_id', u'activity_id',) //默认的查询集合 def get_queryset(self, request): return super(GiftConfirmAdmin, self).get_queryset(request).all().order_by("-id") //根据关键字进行查询集合 def get_search_results(sel

  • django xadmin中form_layout添加字段显示方式

    需求: 用的是django的框架,想显示一个基本固定的页面,用到了form_layout 上图的ROW中添加的是model中的字段名,可以显示对应的内容,如果想一行显示多个,可以写成 Row('Flow_type', 'Demand_name'),效果如下图(图片是别人的,借鉴一下) 想正常的显示,还有最后一步就是在把你需要展示的ROW中的字段,放在fields中(部分截取了一下) 补充知识:xadmin 编辑页隐藏字段 引用xadmin 的fieldSet 对不想显示的字段添加**{"styl

  • Django Xadmin多对多字段过滤实例

    在xadmin中是不能像原生admin那样使用formfield_for_manytomany方法来过滤多对多字段 进入xadmin源码,找到了formfield_for_dbfield这个方法,测试是有用的,可以过滤第一个选项框的值 补充知识:给django admin后台管理user扩展下拉框及多选框的字段 1.首先在models.py中编写扩展User所用到的userProfile模型及下拉框和多选框选项值所需要的模型(因为我所做的下拉框和多选框的值都是从数据库里面取得),代码如下: 2.

  • 解决Django部署设置Debug=False时xadmin后台管理系统样式丢失

    对于使用Django框架开发的系统,当部署时设置settings.py文件中Debug=False时xadmin后台管理系统样式会丢失. [问题原因]: django的生产环境不同开发环境,在生产环境下(DEBUG=False),django.contrib.staticfiles 是不起任何作用的,也就说 django.contrib.staticfiles 只对开发环境(DEBUG=True)开启.所以会导致xadmin样式丢失现象. [解决方案]: ①在settings.py中添加如下配置

  • 解决django 多个APP时 static文件的问题

    每个APP下都有自己的static文件夹,那如何设置将不会混用呢 以下是实例(我项目里有两个APP(login 和main)) 1.首先在setting 文件修改配置路径 STATIC_URL = '/static/' STATICFILES_DIRS = [ os.path.join(BASE_DIR, "MGStudio", "static"), os.path.join(BASE_DIR, "main", "static"

  • 快速解决Django关闭Debug模式无法加载media图片与static静态文件

    开发时,通常打开Debug模式会快速定位开发时的一些问题. 项目开始部署时,关闭Debug模式,url.py路由静态文件和图片写法: # url.py from django.views import static from django.conf import settings #路由静态文件和图片 urlpatterns = [ url(r'^static/(?P<path>.*)$', static.serve, {'document_root': settings.STATIC_ROO

  • 解决django中form表单设置action后无法回到原页面的问题

    django中form表单设置action后,点提交按钮是跳转到action页面的,比如设置action为login,网址为192.168.1.128,跳转后便会来到192.168.1.128/login,F5刷新也会是重新提交表单对话框,无法回到原页面. 因此就要在django服务器进行重定向,具体就是 from django.shortcuts import redirect #最后返回原页面 return redirect(url) 补充知识:Django + Ajax发送POST表单,并

  • jQuery ajax 当async为false时解决同步操作失败的问题

    jQuery的ajax,当async为false时,同步操作失败.解决方案,jqueryasync 最近做项目遇到jQuery的ajax,当async为false时,同步操作失败的问题,上网搜索下,得到解决办法,这里就说下如何解决: 引发失败时代码: $.ajax({ url : 'your url', data:{name:value}, cache : false, async : true, type : "POST", dataType : 'json/xml/html', s

  • 解决django xadmin主题不显示和只显示bootstrap2的问题

    异常:python3的xadmin主题只显示默认和bootstrap2 解决办法: 慢慢来 相信能遇到这个问题的人,都是已经配置好xadmin的,该True的也都写过了 首先 找到xadmin文件,不会找的自己百度. 进入xadmin下的plugins文件夹,打开themes.py文件 然后 找到这一段,大概在70行 最后 把 if ex_themes: 这行改为 if len(json.loads(ex_themes)) > 10: 把 if six.PY3: content = conten

  • Django通过设置CORS解决跨域问题

    一.Ajax 跨域请求 Ajax 请求一个目标地址为非本域(协议.主机.端口任意一个不同)的 web 资源. 前端 http://192.168.10.50:8080 后端 http://192.168.10.50:8000 Ajax 跨域请求保护的作用:防止跨站的攻击. 二.如何解决跨域的访问 当我们在现实当中有需要跨域访问资源,有两种解决方案: 前端解决:jsonp 后端解决(Django):CORS 专门解决方案 这篇文章主要介绍使用 Django 框架进行开发时的后端解决方案. 三.Dj

  • 解决vue2.0 element-ui中el-upload的before-upload方法返回false时submit()不生效问题

    我要实现的功能是在上传文件之前校验是否表格中存在重复的数据,有的话,需要弹窗提示是否覆盖,确认之后继续上传,取消之后,就不再上传. 项目中用的element-ui是V1.4.3 <el-upload class="upload-demo" drag ref="fileUpload" :action="urls.fileUpload" :on-success="handleUploadSuccess" :on-error=

  • 解决Django数据库makemigrations有变化但是migrate时未变动问题

    写models.py时缺少了一个 verbose_name,导致数据库出现问题,整了很久,摸索出重新建立数据库的方法: 首先删除每个app中的migrations中的除了init.py的文件,在数据库中清空所有的表,然后执行migrate,这时会自动生成系统默认的那些表,然后执行makemigrations,再执行migrate 如果只是众多应用中的一个出了问题的话,删除与之相关的表,然后进入django_migrations表中,将相应的app那项记录删除,然后再执行 makemigratio

  • 解决Java 部署Tomcat时使用jni和jna调用DLL文件的问题

    我的前一篇博客提到,我们公司项目的restful框架中要用到底层的DLL C++库,最后经过测试验证结果选择采用JNA方法来调DLL库. 之后基础框架在IDEA中的jetty服务中调试成功,但是在部署到Tomcat上时出现了无法加载DLL库的状况,只能现学现卖了. 一. 把DLL文件放在Tomcat下的方法: 在Tomcat中加载dll,供其它接口调用: 在Tomcat目录根下新建一个文件夹,这里就叫DLL吧,<tomcat_home>/DLL: 把需要用到的dll放入新建的DLL目录下: 编

随机推荐