如何在 Django 中在函数之间传递变量?

3

我在views.py中有一个如下的函数:

def signin(request):
    if request.method == 'POST':
        uname = request.POST['username']
        pwd = request.POST['password'] 
        #and other code

然后我有另一个这样的函数:

def reservations(request):
    try:
        c = Utilisateur.objects.get(username = uname)
        reserve = Reserve.objects.get(client = c)
        return render (request, 'reservation.html', {'reserve':reserve})
    except:
        return HttpResponse ('you have no reservations!')

我想使用第一个函数的 "uname" 变量,但它不起作用了,有解决办法吗?

你能不能使用会话来存储值?session = sessions.Session() - Midhun Raj
我不知道怎么做,你能帮我吗? - user19069531
如果您在登录视图中登录用户,则不需要传递用户名。假设您正在使用内置的Django身份验证,您可以在登录后的任何时间访问User对象,如request.user所示。 Django设置一个cookie以便知道用户是谁。 - little_birdie
这就是问题所在,我没有使用内置的Django身份验证。 - user19069531
1个回答

3
在第一个视图中,将值保存在会话中:
def signin(request):
    if request.method == 'POST':
        uname = request.POST['username']
        request.session['uname'] = uname

然后在第二个视图中,从会话中获取值:

def reservations(request):
    try:
        uname = request.session['uname']
        c = Utilisateur.objects.get(username = uname)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接