2015-10-28 2 views
1

Если я перехожу на http://localhost:8000/login/, будет отображаться форма входа в систему, и вы должны ввести username и password. Если учетные данные являются правильными, вы будете перенаправлены на http://localhost:8000/dashboard/. Проблема, с которой я сталкиваюсь во время тестирования, хотя мои username и password верны, она не перенаправляется на http://localhost:8000/dashboard/, а скорее на http://testserver/admin/login/?next=/dashboard/. Я использую следующий код для отдыха функциональности переназначения в Джанго:Проверка перенаправления URL-адресов в 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', '[email protected]', '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 

Вот и я получаю body.text из admin страницы, но не dashboard страницу.

Update:

вид Dashboard:

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

ответ

1

Потому что вы не получаете вход в пароль, который вы отправляете вызова входа отличается от того, который вы используете при создании пользователя внутри. ваш тестовый пример, поэтому учетные данные недействительны.

Обратите внимание, что здесь не нужно звонить client.get('/login/').

+0

Я обновил свой вопрос с помощью кода селена, пожалуйста, проверьте! – python

+0

Если я не называю 'client.get ('/ login /')', то вы не можете пойти 'dashboard', так как разрешены только аутентифицированные пользователи. – python

+0

Неправда. Вы входите в систему с именем 'self.client.login (...)'. В тесте вам не нужно сначала посещать страницу. –