免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5453 | 回复: 4
打印 上一主题 下一主题

[Django]httpd运行django admin界面CSS丢失 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-04-17 16:25 |只看该作者 |倒序浏览
      发现个奇怪的现象。
      Django有个自动管理界面,只要取消掉setting.py中相关的注释,确定INSTALL_APPS中有django.contrib.staticfiles这一项。然后再用python manage runsever 运行django自带的服务器就可以在浏览器中看见好看的界面,但用apahce看就没有图形界面,完全丢失CSS。
      为什么会出现这种情况?

      我尝试了两种方法:
      第一种是修改 /usr/lib64/python2.7/site.py 文件中
                                    483     encoding = "ascii" # Default value set by _PyUnicode_Init()
这一行的编码,将ascii改为gbk,重启服务器,界面依旧难看。
      第二种是在虚拟主机配置文件中加入如下内容:
                  Alias "/media" "/usr/local/lib/site-packages/django/contrib/admin/media"
                 <Location "/media">
                     SetHandler None
                 </Location>
可惜我在admin那个文件中连media这个文件夹都没找到

      是大家都这样还是我被鄙视了?

论坛徽章:
0
2 [报告]
发表于 2014-04-18 16:21 |只看该作者
这个是apache部署django一直遇到的问题。我们想办法看看其他解决方式

论坛徽章:
0
3 [报告]
发表于 2014-04-21 16:55 |只看该作者
误打误撞的解决了问题,愿意只是想引入自己的CSS文件,没想到顺道解决了之前的问题,详情如下:

先从我自己的说起,我想在html模板中引入自己的css,按原先在写html时候的思路来,绝对路径相对路径试了好几次,没用。

然后在官网上找到了解决方案:
只需要修改settings.py和要引入css的html文件即可

html文件比较简单,先说html的修改,格式如下
  4     {% load staticfiles %}
  5     <link href="{% static "contact/css/contact_form.css" %}" rel="stylesheet"     type="text/css" />

再说settings.py:
89 # Static files (CSS, JavaScript, Images)
90 # https://docs.djangoproject.com/en/1.6/howto/static-files/
91
92 STATIC_URL = '/static/'
93
94 STATICFILES_FINDERS = (
95     "django.contrib.staticfiles.finders.FileSystemFinder",
96     "django.contrib.staticfiles.finders.AppDirectoriesFinder",
97 )
98
99 STATICFILES_DIRS = (
100     #os.path.join(BASE_DIR, "static"),
101     '/var/www/witweb/contact/static/',
102 )
103
104 STATIC_ROOT = "/var/www/witweb/static/"

这是我的目录结构:
请重点关注contact和static两个文件夹。
.
|-- books
|   |-- admin.py
|   |-- admin.pyc
|   |-- __init__.py
|   |-- __init__.pyc
|   |-- models.py
|   |-- models.pyc
|   |-- templates
|   |   |-- list.html
|   |   |-- print_request.html
|   |   |-- search_form.html
|   |   `-- search_results.html
|   |-- tests.py
|   |-- urls.py
|   |-- urls.pyc
|   |-- views.py
|   |-- views.pyc
|   `-- :w
|-- contact
|   |-- admin.py
|   |-- admin.pyc
|   |-- forms.py
|   |-- forms.pyc
|   |-- __init__.py
|   |-- __init__.pyc
|   |-- models.py
|   |-- models.pyc
|   |-- static
|   |   `-- contact
|   |       `-- css
|   |           `-- contact_form.css
|   |-- templates
|   |   |-- contact_form.html
|   |   `-- thanks.html
|   |-- tests.py
|   |-- urls.py
|   |-- urls.pyc
|   |-- views.py
|   `-- views.pyc
|-- course
|   |-- admin.py
|   |-- admin.pyc
|   |-- __init__.py
|   |-- __init__.pyc
|   |-- models.py
|   |-- models.pyc
|   |-- templates
|   |   |-- dateapp
|   |   |   |-- current_datetime.html
|   |   |   `-- nav.html
|   |   |-- dateapp2
|   |   |   |-- base.html
|   |   |   |-- current_datetime.html
|   |   |   `-- hours_ahead.html
|   |   |-- includes
|   |   |   `-- nav.html
|   |   `-- mypage.html
|   |-- tests.py
|   |-- urls.py
|   |-- urls.pyc
|   |-- views.py
|   `-- views.pyc
|-- manage.py
|-- static
`-- witweb
    |-- __init__.py
    |-- __init__.pyc
    |-- my.cnf
    |-- settings.py
    |-- settings.pyc
    |-- urls.py
    |-- urls.pyc
    |-- views.py
    |-- views.pyc
    |-- wsgi.py
    `-- wsgi.pyc

运行python manage.py collectstatic, 然后再看static文件夹
static/
|-- admin
|   |-- css
|   |   |-- base.css
|   |   |-- changelists.css
|   |   |-- dashboard.css
|   |   |-- forms.css
|   |   |-- ie.css
|   |   |-- login.css
|   |   |-- rtl.css
|   |   `-- widgets.css
|   |-- img
|   |   |-- changelist-bg.gif
|   |   |-- changelist-bg_rtl.gif
|   |   |-- chooser-bg.gif
|   |   |-- chooser_stacked-bg.gif
|   |   |-- default-bg.gif
|   |   |-- default-bg-reverse.gif
|   |   |-- deleted-overlay.gif
|   |   |-- gis
|   |   |   |-- move_vertex_off.png
|   |   |   `-- move_vertex_on.png
|   |   |-- icon_addlink.gif
|   |   |-- icon_alert.gif
|   |   |-- icon_calendar.gif
|   |   |-- icon_changelink.gif
|   |   |-- icon_clock.gif
|   |   |-- icon_deletelink.gif
|   |   |-- icon_error.gif
|   |   |-- icon-no.gif
|   |   |-- icon_searchbox.png
|   |   |-- icon_success.gif
|   |   |-- icon-unknown.gif
|   |   |-- icon-yes.gif
|   |   |-- inline-delete-8bit.png
|   |   |-- inline-delete.png
|   |   |-- inline-restore-8bit.png
|   |   |-- inline-restore.png
|   |   |-- inline-splitter-bg.gif
|   |   |-- nav-bg.gif
|   |   |-- nav-bg-grabber.gif
|   |   |-- nav-bg-reverse.gif
|   |   |-- nav-bg-selected.gif
|   |   |-- selector-icons.gif
|   |   |-- selector-search.gif
|   |   |-- sorting-icons.gif
|   |   |-- tool-left.gif
|   |   |-- tool-left_over.gif
|   |   |-- tool-right.gif
|   |   |-- tool-right_over.gif
|   |   |-- tooltag-add.gif
|   |   |-- tooltag-add_over.gif
|   |   |-- tooltag-arrowright.gif
|   |   `-- tooltag-arrowright_over.gif
|   `-- js
|       |-- actions.js
|       |-- actions.min.js
|       |-- admin
|       |   |-- DateTimeShortcuts.js
|       |   `-- RelatedObjectLookups.js
|       |-- calendar.js
|       |-- collapse.js
|       |-- collapse.min.js
|       |-- core.js
|       |-- inlines.js
|       |-- inlines.min.js
|       |-- jquery.init.js
|       |-- jquery.js
|       |-- jquery.min.js
|       |-- LICENSE-JQUERY.txt
|       |-- prepopulate.js
|       |-- prepopulate.min.js
|       |-- SelectBox.js
|       |-- SelectFilter2.js
|       |-- timeparse.js
|       `-- urlify.js
`-- contact
    `-- css
        `-- contact_form.css

这么多行只有最后一行是我想要的,然后重启apache,搞定。
但static里面的admin是什么的,这得从collectstatic这条命令说起。
当运行Python manage.py collectstatic的时候,系统会根据settings.py中STATICFILES_FINDERS中的顺序把staticfiles都拷贝到STATIC_ROOT中去,STATICFILES_DIRS中指定FileSytemFinder搜索目录,AppDirectoriesFinder会按INSTALLED_APPs中的信息搜索。整个过程真的是拷贝,你在里面放.py的文件他都给你拷贝过来。

这是我的INSTALLED_APPS:
32 INSTALLED_APPS = (
33     'django.contrib.admin',
34     'django.contrib.auth',
35     'django.contrib.contenttypes',
36     'django.contrib.sessions',
37     'django.contrib.messages',
38     'django.contrib.staticfiles',
39     #'django.contrib.sites',
40     'django.contrib.admindocs',
41     'course',
42     'books',
43     'contact',
44 )
所以admin也在里面。
然后我尝试了下admin界面,可以了。

官方文档中多次提到类似于这样的话:This is not suitable for production use.
但我没出现unsuitable的情况啊,但总觉得是个隐患,还得进一步研究。

论坛徽章:
0
4 [报告]
发表于 2014-04-21 19:42 |只看该作者
发现我上面忘了一点,还要在我的witweb的urls.py里面动点手脚,witweb是和manage.py平行的目录,详见目录数,在urlpatterns后面加点内容:
urlpatterns = patterns('',
    ...
) + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

论坛徽章:
0
5 [报告]
发表于 2014-04-22 10:25 |只看该作者
如果再urls.py中没iy引入下面两个模块的请引入下面两个模块
from django.conf import settings
from django.conf.urls.static import static
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP