Django Apache / mod_python Admin CSS不与管理表一起出现

时间:2009-01-26 17:42:30

标签: windows django apache admin mod-python

我在localhost上使用Windows XP / Django / apache / mod_python。除了管理CSS不呈现之外,所有部分都在工作。管理员工作,但没有HTML格式。我已经添加了:

settings.py

  INSTALLED_APPS
  'django.contrib.admin',

urls.py

  from django.contrib import admin
  admin.autodiscover()
  (r'^admin/(.*)', admin.site.root),

conf/http.conf

  <Location "/"> 
    SetHandler python-program
    PythonPath "['C:/django'] + sys.path"
    PythonHandler django.core.handlers.modpython
    SetEnv DJANGO_SETTINGS_MODULE mysite.settings
    PythonDebug On
  </Location>

  <Location "/cpssite/"> 
    SetHandler python-program
    PythonHandler django.core.handlers.modpython
    SetEnv DJANGO_SETTINGS_MODULE myapplication.settings
    PythonInterpreter /myapplication
    PythonDebug On
  </Location>

我很难过。我应该在某处添加更多代码吗?

5 个答案:

答案 0 :(得分:27)

您的ADMIN_MEDIA_PREFIX是否存在?它与MEDIA_URL有什么不同?你是否包括尾随斜线?处理Apache是​​为了正确提供管理媒体吗?

默认的Django配置的管理媒体位于{Django install dir} / contrib / admin / media。 ADMIN_MEDIA_PREFIX默认为/ media /。所以你需要在Apache配置中添加这样的东西:

Alias /media/ /path/to/django/contrib/admin/media/

这将告诉Apache,对mysite.com/media/css/whatever.css的请求意味着提供/path/to/django/contrib/admin/media/css/whatever.css,这应该可以解决您的问题。

答案 1 :(得分:7)

我曾经遇到同样的问题,http.conf中的以下条目与我一起工作正常:

<Directory "Path-to-python/Lib/site-packages/django/contrib/admin/media/"> 
    AllowOverride None 
    Options None 
    Order allow,deny 
    Allow from all 
</Directory> 

Alias /media/ "Path-to-Python/Lib/site-packages/django/contrib/admin/media/"

<Location "/mysite/">
    SetHandler python-program
    PythonHandler django.core.handlers.modpython
    SetEnv DJANGO_SETTINGS_MODULE mysite.settings
    PythonOption django.root /mysite
    PythonInterpreter mysite
    PythonDebug On
    PythonPath "['C:/Python/Django/apps'] + sys.path"
</Location>

答案 2 :(得分:2)

这是我特定于django的apache配置。请注意,django处理除了媒体之外的每个传入URL(位置/),它被禁用,数据从django的媒体目录提供。

<Location "/">
  SetHandler python-program
  PythonHandler django.core.handlers.modpython
  SetEnv DJANGO_SETTINGS_MODULE mysite.settings
  #PythonOption django.root /
  PythonDebug On
  PythonPath "['e:/dj'] + sys.path"
</Location>

Alias /media  e:/dj/django-trunk/django/contrib/admin/media/
<Location "/media">
  SetHandler None
</Location>

答案 3 :(得分:1)

如果您不想让管理媒体使用/ media目录,您可以指定ADMIN_MEDIA_PREFIX ='admin_media',然后从您的网络服务器创建一个链接/别名,将/ admin_media /的调用重定向到/ usr / share / pyshared / django / contrib / admin / media(取决于您的操作系统)为您的生产服务器...

答案 4 :(得分:1)

由于这个问题很长一段时间,这可能不是一个相关的答案,但我把这些信息用于帮助碰巧在这里偶然发现的人。 从1.4版开始,不推荐使用ADMIN_MEDIA_PREFIX设置。这里描述了使用版本&gt; = 1.4提供静态和媒体文件的方式

https://docs.djangoproject.com/en/dev/releases/1.4/#django-contrib-admin

https://docs.djangoproject.com/en/dev/howto/deployment/wsgi/modwsgi/#serving-files

https://docs.djangoproject.com/en/dev/howto/deployment/wsgi/modwsgi/#serving-the-admin-files

基本上它可以分4个步骤设置 -

  1. 将STATIC_ROOT设置为指向将为您网站的所有静态文件提供服务的目录
  2. 设置应为其提供静态内容的STATIC_URL
  3. 运行manage.py collectstatic
  4. 将您的网络服务器配置为从STATIC_ROOT
  5. 提供STATIC_URL请求

    媒体文件相同

相关问题