在Django中增加会话变量值

时间:2020-06-24 15:10:29

标签: django session-variables

每次用户访问网页时,我都会创建一个令牌, 令牌端有一个3位数的计数器,每次用户刷新页面时,计数器都应递增,但是我无法弄清楚。如何首次初始化会话变量并在会话的其余部分递增。 >

Views.py

    def home(request):
         request.session['num'] = 1
    
         request.session['num'] += 1

         res = ''.join(random.choices(string.ascii_uppercase + string.digits,k=10 ))
    

         res1 = ''.join(res+str(request.session['num'] ).zfill(3))

    
         request.session['tk'] = res1
         return render(request,'home.html',{'res':res1})

home.html

    {% block content %}
    <h1>Token Generation </h1>
    <form action="{% url 'send' %}" method="POST">
        {% csrf_token %}
        
        <div class="form-group">
            <label for="exampleInputPassword1">Token : </label>
            <label for="exampleInputPassword1" name="res12">{{res}}</label>
        </div>
       
        <button type="submit" class="btn btn-primary">Send</button>
    </form>

{% endblock content %}

有人可以帮我吗?

1 个答案:

答案 0 :(得分:1)

在增加num的值之前,请检查其是否在request.session

def home(request):
   ...
   num = request.session.get('num')
   if num is None:
       request.session['num'] = 1
   else:
       request.session['num'] +=1
   
   return render(request, 'home.html', {'num': num})
        

您还可以使用try...except来实现相同的目标,它更具Python特色

def home(request):
    try:
        request.session['num'] +=1
    except KeyError:
        request.session['num'] = 1
    return render(request, 'home.html', {'num': request.session['num']})
   
相关问题