当我离开它时,Django再次检查我的ListView

时间:2016-06-15 04:37:08

标签: python django

我有两个视图,当我转到网址(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

2 个答案:

答案 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')
]