django 1.6使用apache的别名提供静态管理文件

时间:2014-08-15 03:34:41

标签: django apache

所以我正在转换Django教程以完全使用Apache而不是使用内置的“runserver”命令。我得到了第一步的工作;让Apache提供静态文件(css)。现在我需要让它为管理员提供静态文件。

我的代码到目前为止在Apache 2.4的httpd.conf文件中。

#static files for site
Alias /static/ "C:/mysite/polls/static/"
<Directory "C:/mysite/polls/static">
Require all granted
</Directory>

#static files for admin
Alias /static/ "C:/Python27/Lib/site-packages/django/contrib/admin/static/"
<Directory "C:/Python27/Lib/site-packages/django/contrib/admin/static">
Require all granted
</Directory>

显然,对第二个块使用相同的别名不起作用,并且不会为管理员加载CSS。该网站(第一块)加载正常。现在,Django教程中的这个页面详细介绍了如何使其工作的整个过程。我只是想不出来。也许我正在做一个语法错误,我在这里和其他地方已经阅读了无数的帖子。

该文件提到了三种方法。我想以第二种方式做到这一点;通过使用别名指令:“使用Alias指令,如上所示,将相应的URL(可能是STATIC_URL + admin /)别名为管理文件的实际位置。”

现在我不明白它所说的“STATIC_URL + admin /”的确切部分。我尝试了各种各样的变体,但它不起作用。我的管理页面链接正是这样的: http://127.0.0.1/admin/

我们能否具体针对WINDOWS和DJANGO 1.6来解决这个问题?我知道在DJANGO 1.4之前,在settings.py文件中使用“ADMIN_MEDIA_PREFIX”有不同的方法。这种方式现在已弃用,我想使用别名。和奖金。别名如何正常工作?

谢谢大家。

编辑: 链接提到了如何做到这一点。在“提供管理文件”下,我需要找出使用别名的第二种方法。 https://docs.djangoproject.com/en/1.6/howto/deployment/wsgi/modwsgi/

2 个答案:

答案 0 :(得分:1)

这就是“静态”应用程序的用途。您应该在部署时执行manage.py collectstatic,这会将您的应用程序和内置/ contrib的所有静态内容收集到一个位置,这是您将Apache别名指向的位置。

但是如果你真的想要硬编码,那么STATIC_URL + admin恰恰意味着:STATIC_URL的值,后缀为“admin”,所以Alias /static/admin

答案 1 :(得分:0)

这是最终有效的代码:

Alias /static/admin "C:/Python27/Lib/site-packages/django/contrib/admin/static/admin/"
<Directory "C:/Python27/Lib/site-packages/django/contrib/admin/static/admin">
Require all granted
</Directory>

Alias /static/ "C:/mysite/polls/static/"
<Directory "C:/mysite/polls/static">
Require all granted
</Directory>

请注意,ORDER非常重要。我必须别名管理静态BEFORE别名站点静态。听起来像一个级联类型的问题,更有意义的是先例。

此外,我的管理员链接不正确。它以...... /admin/static/结尾。它应该更深入.. /admin/static/admin/

最后有2个区域用于提供静态文件。管理员先来,然后是静态第二站点。

感谢所有人,这应该是真实记录的,可能是一些人的陷阱。