16

我有 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>

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

4

5 回答 5

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,这应该可以解决您的问题。

于 2009-01-26T17:47:28.767 回答
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>
于 2009-02-06T12:03:07.027 回答
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>
于 2009-04-08T06:05:28.970 回答
1

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

于 2009-11-23T16:18:25.453 回答
1

由于问题来自很久以前,这可能不是一个相关的答案,但我将这些信息用于帮助像我一样碰巧在这里绊倒的任何人。从 1.4 版开始,不推荐使用 ADMIN_MEDIA_PREFIX 设置。此处描述了提供版本 >= 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 的 STATIC_URL 请求

媒体文件也一样

于 2012-08-18T12:08:21.027 回答