У меня есть похожий вопрос к этому -
Условное перенаправление входа в систему в Django
Но я не мог понять, как добиться результата от ответов там.
Я относительно новичок в Джанго. Я повторно использовал этот код откуда-то, что перенаправляет пользователя на страницу входа. Но после входа в систему я всегда попадаю на стартовую / домашнюю страницу пользователя. Я хочу, чтобы они видели страницу, которую они действительно запрашивали, а не домашнюю страницу пользователя все время. Можете ли вы сказать мне, что и где я могу внести изменения, это должно быть там, где я использую функцию 'redirect'. Я, вероятно, должен сохранить некоторую переменную сеанса и сделать это, но не совсем получая начальную точку. есть мысли?
Ниже приведен код -
def view_or_basicauth(view, request, test_func, realm = "", *args, **kwargs):
if test_func(request.user): # Already logged in, just return the view.
return view(request, *args, **kwargs)
# They are not logged in. See if they provided login credentials
if 'HTTP_AUTHORIZATION' in request.META:
auth = request.META['HTTP_AUTHORIZATION'].split()
if len(auth) == 2:
# NOTE: We are only support basic authentication for now.
if auth[0].lower() == "basic":
uname, passwd = base64.b64decode(auth[1]).split(':')
user = authenticate(username=uname, password=passwd)
if user is not None:
if user.is_active:
login(request, user)
request.user = user
return view(request, *args, **kwargs)
# Either they did not provide an authorization header or something in the authorization attempt failed. Send a 401 back to them to ask them to authenticate.
key = request.path.split('/')
if len(key) > 1:
base_url = request.get_host()
return redirect( 'https://' + base_url + '/login/')
s = '401 Unauthorized'
response = HttpResponse(s)
response.status_code = 401
response['Content-Length'] = '%d' % len(s)
response['WWW-Authenticate'] = 'Basic realm="%s"' % realm
return response