93

静的ファイルを取得できません。いろいろ設定やディレクトリ構成などを試してみましたが、404のままです。debug_toolbar がインストールされているので、STATIC_URL がリクエスト コンテキストに到達していることがわかります。

/static を示すディレクトリ構造 (試しに、食事アプリ フォルダーとユーザーの中にディレクトリを配置しました。

/mealmate
    /mealmate
    /meals
    /static
        /css
             /bootstrap.min.css
    /templates
    /users

Settings.py (いくつかの重要な設定ですが、他のさまざまな設定を試しました):

MEDIA_ROOT = os.path.join(PROJECT_PATH, 'media/')

STATIC_URL = '/static/'

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
)

WSGI_APPLICATION = 'mealmate.wsgi.application'

レンダリングされた base.html で

    <link rel="stylesheet" href="/static/css/bootstrap.min.css">

何か案は?ありがとう

4

21 に答える 21

71

私にとって、これは で debug を false に設定したことが原因であることが判明しましたsettings.py--insecure回避策はスイッチをに渡すことrunserverですが、実際の解決策は適切な Web サーバーを使用して静的ファイルを提供することです。詳細については、この質問への回答を参照してください。

于 2016-12-09T13:35:49.230 に答える
23

これをWebサーバーで実行している場合、静的ファイルをパブリックアクセス可能なフォルダーにコピーしていますか?例えば:

# web accessible folder
STATIC_ROOT = '/home/your_name/www/mealmate/static/'

# URL prefix for static files.
STATIC_URL = '/static/'

# Additional locations of static files
STATICFILES_DIRS = (
    # location of your application, should not be public web accessible 
    '/home/your_name/website/mealmate/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 static Filesを使用し、manage.pyを使用して静的ファイルをパブリックアクセス可能なフォルダーにコピーできます。

# --link    Create a symbolic link to each file instead of copying.
# --noinput Do NOT prompt the user for input of any kind.
#
python manage.py collectstatic -link --noinput

お役に立てば幸いです。

于 2012-11-11T18:56:51.287 に答える
8

私は単に同等のものを追加しました

STATICFILES_DIRS = (
    '/absolute_path_to_project/mealmate/static',
)

これを機能させるには。もちろん、absolute_path_to_project実際のパスに置き換え、必要に応じてドライブ文字を追加してください。

于 2013-08-12T00:26:44.210 に答える
5

ここでは Django1.3+ を使用していると仮定しています。

最初に、さらにいくつかの設定を定義する必要があります。

STATICFILES_FINDERS = [
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
]

STATICFILES_DIRS = [
    path.join(TOP_DIR, 'static'),
]

STATIC_ROOT = path.join(TOP_DIR, 'staticfiles')
STATIC_URL = '/static/'

これは、そのディレクトリを見つけるのに役立ちます。

また、常に以下を使用して静的ファイルにアクセスする必要がありますSTATIC URL

<link rel="stylesheet" href="{{ STATIC_URL }}css/bootstrap.min.css">
于 2012-10-10T00:36:59.980 に答える
4

INSTALLED_APPSにmealmateが入っていることを確認してください

于 2013-11-25T03:13:35.137 に答える