我得到了两个视图,当我转到url( view1 )视图的模板时,视图1的模板工作得很好,但是,在该模板中,我有一个链接将我发送到url(view2),当我单击它时,浏览器会显示一个属于view1的错误。即使手动输入第二个url,它也会显示来自view1的错误。
浏览器Url
激活/?tpr=2104813和idpr=50
View1
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)Template1
{% 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 %}误差
TypeError at /activation-2 int()参数必须是字符串或数字,而不是'NoneType‘
错误跟踪
257. if int(tokenProspect_v) != int(preRegist_qr[0]['token']):第257行属于view1
编辑:--我忘了说:如果我手动为view1添加参数,它的工作方式就像如果django仍然在加载view1
激活-2?idState=5&tpr=2104813和idpr=50
发布于 2016-06-15 04:51:01
不确定如何与每个用户生成令牌,
在本例中,您的令牌为None,您正在尝试将其强制转换为int。
这可能是问题所在
发布于 2016-06-16 05:17:46
正如@Daniel所说,问题是在url模式的末尾,我没有用$终止第一个表达式,所以它必须是这样的:
urlpatterns = [
url(r'^activation$', Activation_vw.as_view(), name='activation'),
url(r'^activation-2/$', Activation2_vw.as_view(), name='activation-2')
]https://stackoverflow.com/questions/37826249
复制相似问题