首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法获取静态文件以使管理员正常工作

无法获取静态文件以使管理员正常工作
EN

Stack Overflow用户
提问于 2013-07-12 05:52:40
回答 1查看 5.6K关注 0票数 2

就像标题说的那样,所有的404都有:

代码语言:javascript
复制
Page not found (404)
Request Method:     GET
Request URL:    http://localhost/static/admin/css/base.css

Using the URLconf defined in djcms.urls, Django tried these URL patterns, in this order:

    ^admin/

The current URL, static/admin/css/base.css, didn't match any of these.

基本上,我只是在遵循DjangoProject.com上的教程,所以除了Django本身之外,这里没有太多复杂的事情。

我的文件夹结构如下:

代码语言:javascript
复制
root@jerkstore:/var/www/djcms# ls -lsa
total 36
4 drwxrwxr-x  6 myusername myusername 4096 Jul 11 11:49 .
4 drwxr-xr-x 10 myusername www-data  4096 Jul 10 16:34 ..
4 drwxrwxr-x  5 myusername myusername 4096 Jul 11 11:40 admin
4 drwxrwxr-x  2 myusername myusername 4096 Jul 11 15:38 djcms
4 -rwxr-xr-x  1 myusername myusername  248 Jul 10 16:34 manage.py
4 drwxrwxr-x  2 myusername myusername 4096 Jul 11 10:53 polls
4 -rw-rw-r--  1 myusername myusername  415 Jul 11 10:26 .project
4 -rw-rw-r--  1 myusername myusername  577 Jul 11 10:26 .pydevproject
4 drwxrwxr-x  2 myusername myusername 4096 Jul 11 11:43 static

root@jerkstore:/var/www/djcms# ls -lsa static/
total 12
4 drwxrwxr-x 2 myusername myusername 4096 Jul 11 11:43 .
4 drwxrwxr-x 6 myusername myusername 4096 Jul 11 11:49 ..
4 lrwxrwxrwx 1 myusername myusername   73 Jul 11 11:43 admin -> /usr/local/lib/python2.7/dist-packages/django/contrib/admin/static/admin/

root@jerkstore:/var/www/djcms# ls -lsa static/admin/
total 20
4 drwxr-sr-x 5 root staff 4096 Jul 10 16:33 .
4 drwxr-sr-x 3 root staff 4096 Jul 10 16:33 ..
4 drwxr-sr-x 2 root staff 4096 Jul 10 16:33 css
4 drwxr-sr-x 3 root staff 4096 Jul 10 16:33 img
4 drwxr-sr-x 3 root staff 4096 Jul 10 16:33 js

注意:在Apache中启用了FollowSymLinks。

settings.py的相关部分如下所示:

代码语言:javascript
复制
# Absolute path to the directory static files should be collected to.
# Don't put anything in this directory yourself; store your static files
# in apps' "static/" subdirectories and in STATICFILES_DIRS.
# Example: "/var/www/example.com/static/"
STATIC_ROOT = '/var/www/djcms/static'

# URL prefix for static files.
# Example: "http://example.com/static/", "http://static.example.com/"
STATIC_URL = '/static/'

# Additional locations of static files
STATICFILES_DIRS = (
    # Put strings here, like "/home/html/static" or "C:/www/django/static".
    # Always use forward slashes, even on Windows.
    # Don't forget to use absolute paths, not relative paths.
    #'/var/www/djcms/static',
)

# List of finder classes that know how to find static files in
# various locations.
STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
#    'django.contrib.staticfiles.finders.DefaultStorageFinder',
)

ADMIN_MEDIA_PREFIX = '/static/admin/'

我已经在settings.py中尝试了STATIC_变量的几种不同的排列,但到目前为止都没有起作用,我还能用谷歌搜索到的其他东西也是如此。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-12 05:57:18

看起来admin应用程序的静态文件请求正在命中Django应用程序。我假设您的URL定义正确,但它值得重新检查Django静态文件配置。

如图所示,in the documentation on static files

为文件提供服务

除了这些配置步骤之外,您还需要实际提供静态文件。

在开发过程中,如果您使用runserver并且DEBUG设置为True (请参见django.contrib.staticfiles.views.serve()),这将自动完成。

这种方法效率很低,而且可能不安全,因此不适合生产。

有关在生产环境中提供静态文件的适当策略,请参阅Deploying static files

这意味着,您需要设置您的web服务器(例如,Apache)在Django之外提供静态文件(因此,对此URL的请求甚至不应该到达Django应用程序)。

还要确保您已经调用了collectstatic

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17604160

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档