在 Django 中增加会话变量值

Incresing session variable value in django

每次用户访问网页时我都会创建一个令牌, Token End 有一个 3 位数的计数器,每次用户刷新页面时计数器应该递增,但我无法想象它 out.How 第一次初始化会话变量并在会话的其余部分递增。

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 %}

谁能帮帮我。

在增加它的值之前检查 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 来实现相同的目标,而且它更像 pythonic

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