Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.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 - Fatal编程技术网

Django请求上下文不应为';不可能

Django请求上下文不应为';不可能,django,Django,我正忙于将一些身份验证逻辑提取到可重用的应用程序中。 在我的一些视图中,我重定向到主页。由于主页仅在“主机”Django项目中定义,因此我做了一点伪造: urlpatterns = patterns( '', url(r'^sign_up/', views.sign_up, name='sign_up'), ) if settings.UNIT_TEST_SETTINGS: def mock_home(request): return HttpResp

我正忙于将一些身份验证逻辑提取到可重用的应用程序中。 在我的一些视图中,我重定向到主页。由于主页仅在“主机”Django项目中定义,因此我做了一点伪造:

urlpatterns = patterns(
    '',
    url(r'^sign_up/', views.sign_up, name='sign_up'),

)

if settings.UNIT_TEST_SETTINGS:
    def mock_home(request):
        return HttpResponse('mock home view for redirects')

    urlpatterns.append(url(r'^$', mock_home))
但是我之前通过的测试现在失败了, 因为请求上下文是以无的形式通过的

@patch('auth_backend.forms.KagisoUser', autospec=True)
def test_sign_up_post(self, MockKagisoUser):  # noqa
    mock_user = MockKagisoUser.return_value
    mock_user.id = 1
    mock_user.save.return_value = mock_user

    data = {
        'email': 'bogus@email.com',            
        'password': 'mypassword',           
    }

    response = self.client.post('/sign_up/', data, follow=True)

    message = list(response.context['messages'])[0].message <<< NoneType object is not subscriptable

    assert response.status_code == 200
    assert mock_user.save.called
这是我得到的错误:
TypeError:“NoneType”对象不可下标
。我稍微挖掘了一下,整个上下文都没有


为什么
request.context
None?

如果post请求成功,您将重定向到视图
mock\u home

由于您正在返回此视图的
HttpResponse(“重定向的模拟主视图”)
,因此没有模板或模板上下文,因此
request.context
None

@never_cache
@csrf_exempt
def sign_up(request):
   if request.method == 'POST':
        form = forms.SignUpForm.create(
            post_data=request.POST,            
        )

        if form.is_valid():
            try:
                user = form.save()
            except IntegrityError:
                messages.error(request, 'my error message')
                return HttpResponseRedirect(reverse('sign_in'))

            _send_confirmation_email(user, request)
            messages.success(request, 'Thanks for signing up)
            return HttpResponseRedirect('/')
    else:
        form = forms.SignUpForm.create()

    return render(
        request,
        'auth_backend/sign_up.html',
        {'form': form},
    )