18

https://www.example.com/someuri/の場所から Django を実行したいので、https://www.example.com/someuri/admin/に管理インターフェイスがあります。ログイン ウィンドウは表示されますが、ログインするとhttps://www.example.com/admin/にリダイレクトされます。

Django のベース URL をhttps://www.example.com/someuri/に設定するにはどうすればよいですか? BASE_URL で試しましたが、うまくいきませんでした。

4

4 に答える 4

5

/someuri. その構成では、サーバーはヘッダーの SCRIPT_NAME の値を Django に渡します。Django は、それがそのサブパスで提供されていることを認識します。

ただし、フロントエンド サーバーを制御できない場合は、プロジェクトの settings.py に追加することで、Django に強制的にその値を引き継がせることができます。

USE_X_FORWARDED_HOST = True
FORCE_SCRIPT_NAME = '/someuri'

その後、管理アプリケーションであっても、静的ファイルや css などで問題が発生する場合があります。デフォルトの構成では、これらは変更なしで Django 開発サーバーによって提供されます。ただし、上記の変更により、静的ファイルは失われます。これらのファイルを内部の Django 開発サーバーを介して (外部 Web サーバーを介さずに) 提供したい場合は、settings.py プロジェクト ファイルに以下を追加する必要があります。

STATIC_SUFFIX = '/static/'
STATIC_URL = FORCE_SCRIPT_NAME + STATIC_SUFFIX
MEDIA_SUFFIX = '/media/'
MEDIA_URL = FORCE_SCRIPT_NAME + MEDIA_SUFFIX

同じファイルで、TEMPLATES を変更し、以下を追加する必要もあります。

STATIC_ROOT = os.path.join(BASE_DIR, "static/")

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [ STATIC_ROOT ],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

次に、定義されたディレクトリに静的ファイルを収集します。

python manage.py collectstatic

また

python3 manage.py collectstatic

プロジェクト レベルの urls.py ファイルは次のようになります (Django v1.11)。

import os
from django.conf.urls import url
from django.contrib import admin
from django.conf.urls.static import static
from django.conf import settings
from django.views.generic.base import TemplateView

urlpatterns = [
    url(r'^admin/', admin.site.urls),
] + static(settings.STATIC_SUFFIX, document_root=settings.STATIC_ROOT)

その後、管理パッケージは適切なスタイルシートとすべてで問題なく動作するはずです。うまく機能していないように見えるのは、スラッシュがないため、「VIEW SITE」リンクだけです。その解決策は見つかりませんでしたが、おそらく管理アプリケーションをハッキングする必要があります。


それ以外にも、サブパスの下に Django をインストールするためのさまざまなガイドがオンラインで公開されています。面倒ですが、上記は最悪の頭痛の種を回避します。

于 2017-05-27T01:47:42.173 に答える