每次用户访问网页时,我都会创建一个令牌, 令牌端有一个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 %}
有人可以帮我吗?
答案 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']})