Если я перехожу на 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"
Я обновил свой вопрос с помощью кода селена, пожалуйста, проверьте! – python
Если я не называю 'client.get ('/ login /')', то вы не можете пойти 'dashboard', так как разрешены только аутентифицированные пользователи. – python
Неправда. Вы входите в систему с именем 'self.client.login (...)'. В тесте вам не нужно сначала посещать страницу. –