我有两个视图,当我转到网址(view1)时,view1的模板工作正常,但是,在该模板中,我有一个链接,将我发送到网址(view2),当我点击它,浏览器显示属于view1的错误。即使我手动输入第二个网址,它也会显示view1中的错误。
浏览器网址
激活/ TPR = 2104813&安培; IDPR = 50
视图1
class Activation_vw(ListView):
queryset = STATE.objects.order_by('name')
context_object_name = 'states_list'
template_name = 'activation.html'
def get(self, request, *args, **kwargs):
self.object_list = self.get_queryset()
tokenProspect_v = request.GET.get('tpr')
idProspect_v = request.GET.get('idpr')
preRegist_qr = PRE_REGIST_USER.objects.filter(
id=idProspect_v).values('id', 'email', 'token')
if int(tokenProspect_v) != int(preRegist_qr[0]['token']):
msg_v = (
"Wrong URL")
error_v = True
else:
request.session['idProspecto'] = idProspecto_v
msg_v = ""
error_v = False
context = self.get_context_data(msg=msg_v, error=error_v)
return self.render_to_response(context)
模板1
{% if error %}
{{ msg | safe }}
{% else %}
{% for state in states_list %}
<a href="activation-2?idState={{ state.id }}">
<div>{{ state.name }} </div>
</a>
{% empty %}
<p>Empty list.</p>
{% endfor %}
{% endif %}
错误
/ activation-2中的TypeError int()参数必须是字符串或a 数字,而不是&#39; NoneType&#39;
错误追溯
257. if int(tokenProspect_v) != int(preRegist_qr[0]['token']):
第257行属于view1
编辑: 我忘了说: 如果我手动添加view1的参数,就像django仍在加载view1
一样激活-2 idState = 5&安培; TPR = 2104813&安培; IDPR = 50
答案 0 :(得分:0)
我不确定如何为每个用户生成令牌,
在这种情况下,您的令牌为None,并且您正在尝试强制转换为int
这可能是问题
答案 1 :(得分:0)
正如@Daniel Roseman所说,问题出现在url模式的最后,我没有用$终止第一个表达式,所以它必须是这样的:
urlpatterns = [
url(r'^activation$', Activation_vw.as_view(), name='activation'),
url(r'^activation-2/$', Activation2_vw.as_view(), name='activation-2')
]