0

プロジェクトのデフォルト テストを実行すると、1 つのテストが失敗します。

失敗: test_current_site_in_context_after_login (django.contrib.auth.tests.views.LoginTest)

トレースバック (最新の呼び出しが最後): ファイル "/Users/me/Dropbox/dotfiles/.virtualenvs/mysite/lib/python2.7/site-packages/django/contrib/auth/tests/views.py"、294 行目、 test_current_site_in_context_after_login で self.assertEqual(response.context['site_name'], site.name) AssertionError: 'MySite' != u'example.com'

私のsettings.pyファイルには以下が含まれています:

SITE_NAME = 'MySite'

設定ファイルの最後で、コンテキストに SITE_NAME をロードします。

TEMPLATE_CONTEXT_PROCESSORS = GLOBAL_SETTINGS.TEMPLATE_CONTEXT_PROCESSORS + (
    'utils.context_processors.mysite',
)

utils/context_processors.py には以下が含まれます。

from mysite import settings
def mysite(request):
    return {
        'site_name': settings.SITE_NAME,
        'request': request
    }

ソース コードを確認しましたが、テストでサイトの名前が「example.com」と比較される理由がわかりません。django.contrib.sites.models.Site クラスも調べましたが、Site オブジェクトのキャッシュをクリアする必要があるかどうか疑問に思っています。ただし、CACHES 設定はありません。virtualenv 内のすべての pyc ファイルを削除する必要があるなど、.pyc ファイルに競合が発生する可能性はありますか?

ところで、私は Django 1.4.2 と 2.7.1 を実行しています。

どうもありがとう。

4

2 に答える 2

0

問題は、設定で SITE_NAME をハードコードすることです。Site.objects.get_current()代わりにミドルウェア/ビューで使用する必要があります: https://docs.djangoproject.com/en/1.4/ref/contrib/sites/#hooking-into-the-current-site-from-views

于 2012-11-26T23:57:07.123 に答える