登录后的Django重定向

登录后的Django重定向,django,authentication,Django,Authentication,我有一个应用程序,我试图允许登录的用户名单独。我一直在这样做: @login_required(login_url='/login') def index(request): # bunch of queries to provide to the add_rule.html via context return render(request, "index.html", context=context) def user_login(request): if req

我有一个应用程序,我试图允许登录的用户名单独。我一直在这样做:

@login_required(login_url='/login')
def index(request):
    # bunch of queries to provide to the add_rule.html via context
    return render(request, "index.html", context=context)


def user_login(request):
    if request.method == 'GET':
        return render(request, 'registration/login.html')
    else:
        username = request.POST.get('username')
        user = authenticate(username=username) # custom function 
        login(request, user)

        # somehow return the above previous index() function with the request that has updated login/username information
我不确定如何使用现在具有登录信息的请求呈现index.html模板。这些文档不清楚登录后如何重定向。如果没有足够的信息,我深表歉意。

有一个
重定向\u字段\u名称
参数。这指定GET参数的名称,该参数将对进行重定向的路径进行编码。默认情况下,该参数为
'next'

因此,您可以使用以下方法重定向:

from django.http import HttpResponseRedirect

def user_login(request):
    if request.method == 'GET':
        return render(request, 'registration/login.html')
    else:
        username = request.POST.get('username')
        user = authenticate(username=username) # custom function 
        login(request, user)
        return HttpResponseRedirect(self.request.GET.get('next', ''))
从django.http导入HttpResponseRedirect
def用户登录(请求):
如果request.method==“GET”:
返回呈现(请求'registration/login.html')
其他:
username=request.POST.get('username')
用户=验证(用户名=用户名)#自定义函数
登录(请求、用户)
返回HttpResponseRedirect(self.request.GET.GET('next','')
但是,如果身份验证失败,您必须实现一些额外的逻辑,等等

有一个稍微复杂一点的,旨在从
POST
参数、
GET
参数中获取它,并进行一些验证以检查路径是否安全。

有一个
重定向\u字段\u名称
参数。这指定GET参数的名称,该参数将对进行重定向的路径进行编码。默认情况下,该参数为
'next'

因此,您可以使用以下方法重定向:

from django.http import HttpResponseRedirect

def user_login(request):
    if request.method == 'GET':
        return render(request, 'registration/login.html')
    else:
        username = request.POST.get('username')
        user = authenticate(username=username) # custom function 
        login(request, user)
        return HttpResponseRedirect(self.request.GET.get('next', ''))
从django.http导入HttpResponseRedirect
def用户登录(请求):
如果request.method==“GET”:
返回呈现(请求'registration/login.html')
其他:
username=request.POST.get('username')
用户=验证(用户名=用户名)#自定义函数
登录(请求、用户)
返回HttpResponseRedirect(self.request.GET.GET('next','')
但是,如果身份验证失败,您必须实现一些额外的逻辑,等等

有一个稍微复杂一点的方法,目的是从
POST
参数、
GET
参数中获取此信息,并进行一些验证以检查路径是否安全