1

如果我去http://localhost:8000/login/,将显示登录表单,您必须输入usernamepassword。如果凭据正确,那么您将被重定向到http://localhost:8000/dashboard/. 我在测试时面临的问题是即使我的username并且password是正确的,它也没有重定向到http://localhost:8000/dashboard/,而是转到http://testserver/admin/login/?next=/dashboard/. 我正在使用下面的代码来休息 django 中的重定向功能:

class UrlTests(TestCase):

    def test_client_cart(self):
        response = self.client.get('/login/')
        self.assertEqual(200, response.status_code)

    def test_login_client(self):
        User.objects.create_user('rakesh', 'rrs402@nyu.edu', 'ranjan')
        self.client.get('/login/')
        self.client.login(username='rakesh', password='ranjan')
        print self.client.get('/dashboard/')

谁能告诉我为什么我被重定向http://testserver/admin/login/?next=/dashboard/http://localhost:8000/dashboard/

在我的settings.py文件中:

LOGIN_URL = '/'
LOGOUT_URL = '/logout/'
LOGIN_REDIRECT_URL = '/dashboard/'
LOGOUT_REDIRECT_URL = '/'

我的应用程序运行良好,但我无法测试重定向。谁能给我一些指示我哪里出错了?

如果我打印出来print self.client.login(username='rakesh', password='ranjan')True这意味着我可以登录但为什么不能重定向?

更新:我也尝试使用硒

def login_user(self):
        # User opens his web browser, and goes to the website
        self.browser.get(self.live_server_url + '/login/')
        # User types in his username and passwords and hits return
        username_field = self.browser.find_element_by_name('username')
        username_field.send_keys('rakesh')
        password_field = self.browser.find_element_by_name('password')
        password_field.send_keys('ranjan')
        #User submits the form
        password_field.send_keys(Keys.RETURN)
        body = self.browser.find_element_by_tag_name('body')
        print body.text

在这里,我也得到了admin页面的 body.text,但没有得到dashboard页面。

更新 :

仪表板视图:

class PortalDashboardView(RequireStaffMixinView, TemplateView):
    template_name = "portal/dashboard.html"
4

1 回答 1

1

因为您没有登录。您发送给登录调用的密码与您在测试用例中创建用户时使用的密码不同,因此凭据无效。

client.get('/login/')请注意,无论如何,您不需要在那里打电话。

于 2015-10-28T08:18:19.953 回答