Как изменить некоторые маршруты в Django Project после входа в систему? - PullRequest
0 голосов
/ 17 апреля 2020

Позвольте мне объяснить на примере. Например, когда мы впервые открываем www.coursera.org, мы попадаем на их домашнюю страницу. Тогда мы авторизируемся. После того, как мы войдем в систему, сессия начнется, и мы будем перенаправлены на панель основного курса. но если мы увидим URl, то это www.coursera.org, поэтому теперь домашний маршрут изменился с домашней страницы, чтобы сказать приборную панель. Теперь в django я могу перенаправить на project.com/dashboard с project.com/login, но после входа в систему пользователь не должен иметь доступа к домашней странице ни при каких условиях. Поэтому я хочу изменить project.com/, который до входа в систему показывал домашнюю страницу и теперь отображал панель инструментов. Просто измените функцию представления, связанную с project.com/ route

. Надеюсь, я правильно объяснил свой вопрос. Заранее спасибо за помощь

Ответы [ 2 ]

1 голос
/ 17 апреля 2020

Вы можете использовать встроенный в Django декоратор login_required, который делает именно то, что вы хотите. Например, учитывая, что settings.LOGIN_URL == "/login", что вы украшаете /foo и пытаетесь получить доступ к этому URL без входа в систему, он перенаправит вас на /login/?next=/foo. После входа в систему он перенаправит вас обратно на /foo.

login_required ( redirect_field_name = 'next', login_url = None )

[...]

  • Если пользователь не вошел в систему, перенаправьте на settings.LOGIN_URL, передав текущий абсолютный путь в строке запроса. Пример: /accounts/login/?next=/polls/3/.
  • Если пользователь вошел в систему, выполните представление в обычном режиме. Код представления свободен, если пользователь вошел в систему.

https://docs.djangoproject.com/en/3.0/topics/auth/default/#django .contrib.auth.decorators.login_required

0 голосов
/ 17 апреля 2020

Я не думаю, что это легко выполнимо в urlconf. Если вы используете представления на основе функций, просто проверьте, прошел ли пользователь аутентификацию, и если он есть, то вызовите функцию представления для панели мониторинга, если нет, то откройте первую страницу.

Для CBV, вероятно, используйте UserPassesTestMixin и установите test_fun c для перенаправления аутентифицированных пользователей на панель мониторинга.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...