【问题标题】:Unable to use admin's static file when debug is False in django在 django 中调试为 False 时无法使用管理员的静态文件
【发布时间】:2014-01-15 14:17:06
【问题描述】:

我浏览了这些问题,但没有找到正确的答案。这是我的问题..

我有一些静态文件。这是目录..

/home/user/djangoproject/djangoapp/static

/home/user/djangoproject/templates/base.html(我已经为 django 管理页面修改了一些)

设置 debug = False 后,我已经像这样更改 setting.py

DEBUG = False
ALLOWED_HOSTS = ['*',]
STATIC_URL = '/static/'
STATIC_ROOT = "/home/user/djangoproject/djangoapp/static/"

我的 urls.py 是

urlpatterns = patterns('',
                 url(r'^admin/', include(admin.site.urls)),
                 url(r'^$',login),# and some more views
    )+ static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

之后,我将所有管理静态信息收集到我的应用程序的自定义静态目录路径中,如下所示..

/home/user/djangoproject/djangoapp/static/admin/css & 所有其他

现在我的问题是,当我使用自定义静态文件时,它可以正常工作,但是例如管理员登录页面和管理员站点,管理员静态文件无法正常工作..那么我在哪里做错了,或者我必须做些什么做。

提前谢谢...

【问题讨论】:

  • 你运行collectstatic命令了吗?
  • 是的,只有我复制了所有的管理静态文件
  • 您的意思是,如果调试为 True,则管理静态文件正确显示?
  • 好吧,由于安全或其他原因,static 函数无法与 DEBUG 设置为 False(检查其源代码)一起使用。您必须在您的网络服务器中为包含所有静态文件的目录创建一个别名,请参阅docs.djangoproject.com/en/1.4/howto/static-files/…
  • 您是否错过了整个文档中关于 runserver 不安全且永远不要在生产中使用的粗体且极其突出的警告?

标签: python django django-admin django-static


【解决方案1】:

您需要设置一个网络服务器来提供静态文件。如果您使用的是 Apache,请添加类似

的内容
Alias /static/ /home/user/djangoproject/djangoapp/static/
<Directory /home/user/djangoproject/djangoapp/static>
        Order deny,allow
        Allow from all
</Directory>

到 httpd.conf 应该可以解决问题。欲了解更多信息,请参阅https://docs.djangoproject.com/en/1.6/howto/static-files/deployment/

要通过 Apache 也为 Django 项目提供服务,请添加

WSGIScriptAlias / /home/user/djangoproject/djangoproject/wsgi.py
WSGIPythonPath /home/user/djangoproject

<Directory /home/user/djangoproject/djangoproject>
  <Files wsgi.py>
    Order deny,allow
    Allow from all
  </Files>
</Directory>

Alias /static/ /home/user/djangoproject/djangoapp/static/
<Directory /home/user/djangoproject/djangoapp/static>
  Order deny,allow
  Allow from all
</Directory>

到 httpd.conf。有关如何使用 Apache 设置 Django 的说明,请参阅https://docs.djangoproject.com/en/1.6/howto/deployment/wsgi/modwsgi/

【讨论】:

  • 感谢您的回答。你能看看我的问题的最后评论吗..很抱歉这样说
  • @Swagat 查看我的更新。如何安装Apache,你需要自己弄清楚,因为这取决于你的操作系统(这真的不难)。接下来您需要设置 mod_wsgi (code.google.com/p/modwsgi)。之后按照我的回答中的说明配置 Apache。
  • 我遇到了问题。我的 httpd.conf 文件是空的 & SERVER_CONFIG_FILE 正在运行 apache2.conf 显示在终端中..所以我必须将 apache2.conf 的所有行复制到 httpd.conf ..(apache2.conf 位于 /etc/apache2跨度>
  • 你在什么操作系统上运行?无论如何,只需将配置复制到 httpd.conf 就足够了。没关系,它目前是空的。
  • 我正在使用 ubuntu 12.04 LTS & 在 apache2.conf 中写了一行(# 包括所有用户配置:包括 httpd.conf)和 ServerRoot "/etc/apache2" 行在注释中。我应该取消注释吗?
猜你喜欢
  • 2014-07-06
  • 1970-01-01
  • 1970-01-01
  • 2020-05-12
  • 1970-01-01
  • 2013-06-03
  • 2020-07-01
  • 2016-03-18
  • 2012-09-28
相关资源
最近更新 更多