Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django默认登录测试失败_Django_Django Testing - Fatal编程技术网

Django默认登录测试失败

Django默认登录测试失败,django,django-testing,Django,Django Testing,当我运行项目的默认测试时,有一个测试失败: 失败:登录后在上下文中测试当前站点(django.contrib.auth.tests.views.LoginTest) 回溯(最近一次呼叫最后一次): 文件“/Users/me/Dropbox/dotfiles/.virtualenvs/mysite/lib/python2.7/site packages/django/contrib/auth/tests/views.py”,第294行,在登录后的上下文中测试当前站点 self.assertEqua

当我运行项目的默认测试时,有一个测试失败:

失败:登录后在上下文中测试当前站点(django.contrib.auth.tests.views.LoginTest)

回溯(最近一次呼叫最后一次): 文件“/Users/me/Dropbox/dotfiles/.virtualenvs/mysite/lib/python2.7/site packages/django/contrib/auth/tests/views.py”,第294行,在登录后的上下文中测试当前站点 self.assertEqual(response.context['site\u name',site.name) 断言错误:“MySite”!=u'example.com'

My settings.py文件包含:

SITE_NAME = 'MySite'
from mysite import settings
def mysite(request):
    return {
        'site_name': settings.SITE_NAME,
        'request': request
    }
我在设置文件末尾的我的上下文中加载站点名称,其中包含:

TEMPLATE_CONTEXT_PROCESSORS = GLOBAL_SETTINGS.TEMPLATE_CONTEXT_PROCESSORS + (
    'utils.context_processors.mysite',
)
utils/context_processors.py包含:

SITE_NAME = 'MySite'
from mysite import settings
def mysite(request):
    return {
        'site_name': settings.SITE_NAME,
        'request': request
    }
我看过源代码,但不明白为什么测试会将我的站点名称与“example.com”进行比较。我还研究了django.contrib.sites.models.Site类,想知道是否需要清除站点对象缓存。但是,我没有缓存设置。.pyc文件中是否存在冲突,导致我需要删除virtualenv中的所有pyc文件

顺便说一句,我正在运行Django 1.4.2和2.7.1


非常感谢。

问题是您在设置中硬编码了站点名称。您应该在中间件/视图中使用
Site.objects.get\u current()

问题是您在设置中硬编码了站点名称。您应该在中间件/视图中使用
Site.objects.get_current()

我最近遇到了这个问题,我通过将以下内容添加到我的settings.py文件中修复了它:

SITE_ID = 1
来自Django文档,网址:

站点ID

默认值:未定义

django_站点数据库表中当前站点的整数ID。这是为了使应用程序数据可以连接到特定的站点,并且单个数据库可以管理多个站点的内容


我最近遇到了这个问题,我通过将以下内容添加到我的settings.py文件中修复了它:

SITE_ID = 1
来自Django文档,网址:

站点ID

默认值:未定义

django_站点数据库表中当前站点的整数ID。这是为了使应用程序数据可以连接到特定的站点,并且单个数据库可以管理多个站点的内容


我阅读了您引用的文档并进行了更改,现在我得到了一个错误,“django.core.exceptions.impropertlyconfigured:您使用的是django“sites framework”,而没有设置SITE_ID设置…”但是django在我的设置文件中创建了设置“SITE_ID=1”,我在刚更改的SITE_NAME设置之前就有了它。这个错误闻起来很奇怪…对不起,也许我的解释有点混乱。站点对象是动态的。这意味着您可能应该完全取消站点名称设置,转而引用站点数据库对象。您可以将get_current()方法直接放在中间件或视图中。另一个选择是完全不使用sites框架()。我不仅要删除SITE\u NAME,还要删除TEMPLATE\u CONTEXT\u PROCESSORS指令,以阻止错误的发生。我仍然不明白问题出在哪里,但我需要继续前进。我相信你,因为你至少花了时间来帮助我。谢谢。我阅读了您提到的文档并进行了更改,现在我得到了错误,“django.core.exceptions.impropertlyconfigured:您使用的是django“sites framework”,而没有设置SITE_ID设置…”但django创建了设置“SITE_ID=1”在我的设置文件中,我在我刚更改的站点名称设置之前有它。这个错误闻起来很奇怪…对不起,也许我的解释有点混乱。站点对象是动态的。这意味着您可能应该完全取消站点名称设置,转而引用站点数据库对象。您可以将get_current()方法直接放在中间件或视图中。另一个选择是完全不使用sites框架()。我不仅要删除SITE\u NAME,还要删除TEMPLATE\u CONTEXT\u PROCESSORS指令,以阻止错误的发生。我仍然不明白问题出在哪里,但我需要继续前进。我相信你,因为你至少花了时间来帮助我。谢谢