2

タイトルが示すように、すべての 404 は次のようになります。

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 自体を除けば、ここで複雑なことは何もしていません。

私のフォルダ構造は次のようになります。

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

注: FollowSymLinks は Apache で有効になっています

そして、settings.py の関連セクションは次のようになります。

# 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_ vars のいくつかの異なる順列を試しましたが、これまでのところ何も機能しておらず、Google で検索できたものも他にありません。

4

1 に答える 1

8

アプリの静的ファイルのリクエストがadminDjango アプリにヒットしているようです。URL は適切に定義されていると思いますが、Django の静的ファイルの構成を再確認する価値があります。

静的ファイルに関するドキュメントに見られるように:

ファイルの提供

これらの構成手順に加えて、実際に静的ファイルを提供する必要もあります。

runserverおよびDEBUGを に設定すると、開発中にこれが自動的に行われますTrue(「 」を参照django.contrib.staticfiles.views.serve())。

この方法は非常に効率が悪く、おそらく安全ではないため、本番環境には適していません。

本番環境で静的ファイルを提供するための適切な戦略については、静的ファイルのデプロイを参照してください。

つまり、Django の外部で静的ファイルを提供するように Web サーバー (Apache など) をセットアップする必要があります (したがって、この URL へのリクエストは Django アプリに到達することさえありません)。

また、 を呼び出していることを確認してくださいcollectstatic

于 2013-07-11T21:57:18.137 に答える