1

私のdjangoWebサイト(django 1.3を使用するLinuxサーバーでのセットアップ)がDEBUG=Trueで正しくアクセスできるのは非常に奇妙です。しかし、オプションをDEBUG = Falseに変更すると、静的コンテンツが読み込まれません(cssファイルと画像が見つかりません)

これが私のsetting.pyで得た関連オプションです:

DEBUG = False
STATIC_ROOT = ''
ADMIN_MEDIA_PREFIX = '/static/admin/'
STATICFILES_DIRS = ("/home/ubuntu/ls_website/static/",)
STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)

誰かが何か考えがありますか?バージョンが低すぎる場合は、1.5のリリースをしばらく待ちます。

4

3 に答える 3

1

debug = Falseの場合、djangoは静的ファイルを自動的にロードしないことがわかりました。オプションは、urls.pyで静的パスを設定するか、apacheで静的ファイルを提供します。人々は、urls.pyに静的パスを設定するのはapacheで静的ファイルを提供するよりも遅いと言いました。理由はわかりませんが...

于 2013-02-16T03:20:32.743 に答える
1

DEBUG = Falseの場合、Staticfilesは何もしません。これらのファイルをapacheで提供する必要があります。Staticfilesには、ファイルを1つの場所に集めて簡単にする機能があります。次に、apacheマジックを使用して(指定しなかったため、ここで指定しなかったと仮定します)、apacheにこれらの要求をインターセプトさせ、静的ファイルを提供します。

    Alias /robots.txt  /home/username/Python/project/site_media/static/robots.txt
    Alias /favicon.ico /home/username/Python/project/site_media/static/favicon.ico
    Alias /static/     /home/username/Python/project/site_media/static/

これらのファイルを開発ストップからデプロイメントスポットにコピーするのがbuildstatic、build_static、collectstatic、collect_staticのいずれであるかは覚えていませんが、これらの変数はstaticfilesが魔法をかける方法を制御します

# Absolute path to the directory that holds static files like app media.
# Example: "/home/media/media.lawrence.com/apps/"
STATIC_ROOT = os.path.join(PROJECT_ROOT, "site_media", "static")

# URL that handles the static files like app media.
# Example: "http://media.lawrence.com"
STATIC_URL = "/static/"

# Additional directories which hold static files
STATICFILES_DIRS = [
    os.path.join(PROJECT_ROOT, "static"),
    os.path.join(PROJECT_ROOT, "media"),
]

これは、静的ファイルがプロジェクトの静的フォルダーにあり、 site_mediaフォルダーからそれらを提供することを前提としています。

于 2013-02-17T02:16:11.920 に答える
0

また、開発のためにWindowsとLinuxの間を移動します。settings.pyの絶対パスの問題を回避するには、次の関数を使用します。

def map_path(directory_name):
    return os.path.join(os.path.dirname(__file__),
        '../' + directory_name).replace('\\', '/')

この方法で実装できるもの:

STATICFILES_DIRS = (
    map_path('static'),
)

この関数は、Django1.4.x用に調整されています。Django1.3.x用に少し変更する必要があります。それがあなたを助けることを願っています。

于 2013-02-15T13:34:27.393 に答える