Display the login form for the given HttpRequest.
(self, request, extra_context=None)
| 414 | @method_decorator(never_cache) |
| 415 | @login_not_required |
| 416 | def login(self, request, extra_context=None): |
| 417 | """ |
| 418 | Display the login form for the given HttpRequest. |
| 419 | """ |
| 420 | # Since this module gets imported in the application's root package, |
| 421 | # it cannot import models from other applications at the module level, |
| 422 | # and django.contrib.admin.forms eventually imports User. |
| 423 | from django.contrib.admin.forms import AdminAuthenticationForm |
| 424 | from django.contrib.auth.views import LoginView |
| 425 | |
| 426 | redirect_url = LoginView().get_redirect_url(request) or reverse( |
| 427 | "admin:index", current_app=self.name |
| 428 | ) |
| 429 | if request.method == "GET" and self.has_permission(request): |
| 430 | # Already logged-in, redirect accordingly. |
| 431 | return HttpResponseRedirect(redirect_url) |
| 432 | |
| 433 | context = { |
| 434 | **self.each_context(request), |
| 435 | "title": _("Log in"), |
| 436 | "subtitle": None, |
| 437 | "app_path": request.get_full_path(), |
| 438 | "username": request.user.get_username(), |
| 439 | REDIRECT_FIELD_NAME: redirect_url, |
| 440 | } |
| 441 | context.update(extra_context or {}) |
| 442 | |
| 443 | defaults = { |
| 444 | "extra_context": context, |
| 445 | "authentication_form": self.login_form or AdminAuthenticationForm, |
| 446 | "template_name": self.login_template or "admin/login.html", |
| 447 | } |
| 448 | request.current_app = self.name |
| 449 | return LoginView.as_view(**defaults)(request) |
| 450 | |
| 451 | def autocomplete_view(self, request): |
| 452 | return AutocompleteJsonView.as_view(admin_site=self)(request) |
no test coverage detected