Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在django中访问重定向中的变量_Python_Django_Django Views_Django Urls_Django Login - Fatal编程技术网

Python 在django中访问重定向中的变量

Python 在django中访问重定向中的变量,python,django,django-views,django-urls,django-login,Python,Django,Django Views,Django Urls,Django Login,模板在基于组的登录中呈现。我如何在模板中访问这些变量。例如,我如何在重定向中像呈现中的上下文一样访问这些变量?这是我的密码。 错误是: 未定义名称“username” Views.py def login_user(request): if request.method == "POST": username = request.POST['username'] password = request.POST['password'] user = authenticate

模板在基于组的登录中呈现。我如何在模板中访问这些变量。例如,我如何在重定向中像呈现中的上下文一样访问这些变量?这是我的密码。 错误是:

未定义名称“username”

Views.py

def login_user(request):
if request.method == "POST":
    username = request.POST['username']
    password = request.POST['password']
    user = authenticate(username=username, password=password)
    all_requests= Retest.objects.all() 
    projector_requests = Eventprojector.objects.all()
    classroom_requests = Eventclassroom.objects.all()
    lab_requests = Eventlab.objects.all()
    mikesystem_requests = Eventmikesystem.objects.all()
    extensioncable_requests = Eventextensioncable.objects.all()
    auditorium_requests = Eventauditorium.objects.all()
    graphicshall_requests = Eventgraphicshall.objects.all()
    u = User.objects.get(username=username)




    if user is not None:
        if user.is_active:
            login(request, user)
            if user.groups.filter(name='Rep').exists():
                return redirect('/rep')
            elif
                #..........(other groups)

            else:       
                return render(request, 'retest/login.html', {'error_message': 'Invalid login'})

        else:
            return render(request, 'retest/login.html', {'error_message': 'Your account has been disabled'})
    else:
        return render(request, 'retest/login.html', {'error_message': 'Invalid login'})
  return render(request, 'retest/login.html')
@login_required
def rep(request):

    u=User.objects.get(username=username)
    return render(request, 'retest/home.html', {'u':u})
url.py

url(r'^$', views.login_user, name='login_user'),
url(r'^rep$', views.rep, name='rep'),

当您返回重定向响应时,您是在告诉浏览器加载新的URL。当浏览器请求新URL时,您将无法再访问新视图中的旧上下文

如果需要将信息传递到新URL,可以将其包含在重定向到的URL中,例如
/rep/22/
/rep/?id=22
,或者在会话中保存数据

但是,在这种情况下,您不需要这样做,因为您可以通过
request.user
访问登录的用户

@login_required
def rep(request):
    u = request.user
    return render(request, 'retest/home.html', {'u':u})
您甚至不需要在上下文中包含
u
。由于您使用的是
render
快捷方式,因此只要启用了auth模板上下文处理器,您就应该能够访问模板中的
{{user}}

@login_required
def rep(request):
    return render(request, 'retest/home.html', {})

这些变量是什么?至少举一个例子,你的问题真的不清楚。您试图访问哪些数据?更重要的是,在哪里?编辑了上述问题。