我是python和Django的新手,如果它只是一些愚蠢请宽容。 这是我在views.py中的代码。它显示页面未找到404错误。有没有语法错误。
这里基于不同的b值,我正在查询我正在渲染的不同数据。
@csrf_exempt
def active_user_table(request, b):
if request.method != "GET":
raise Http404
print(b)//Just cheking the correct value coming to the function.This is getting printed in the shell.
if (b==4):
print("Hello World!")
cursor = connection.cursor()
cursor.execute("SELECT core_user.id, name,mobile_number,COUNT(*) as count, created FROM core_user,core_useractivity WHERE core_user.id = core_useractivity.user_id GROUP BY user_id ORDER BY count DESC")
response_data = dictfetchall(cursor)
return render_to_response("siteadmin/active_user_table.tmpl",{'response_data':response_data})
elif (b==3):
print("Hello World!")
cursor = connection.cursor()
cursor.execute("SELECT core_user.id, name, mobile_number, COUNT(*) as count, created FROM core_user, core_useractivity WHERE core_user.id = core_useractivity.user_id AND MONTH(CAST(created as date)) = MONTH(NOW()) AND YEAR(cast(created as date)) = YEAR(NOW()) GROUP BY user_id ORDER BY count DESC")
response_data = dictfetchall(cursor)
return render_to_response("siteadmin/active_user_table.tmpl",{'response_data': response_data})
elif (b==2):
cursor = connection.cursor()
cursor.execute("SELECT core_user.id, name, mobile_number, COUNT(*) as count, created FROM core_user, core_useractivity WHERE core_user.id = core_useractivity.user_id AND DATEDIFF(NOW(), created) <= 7 GROUP BY user_id ORDER BY count DESC")
response_data = dictfetchall(cursor)
return render_to_response("siteadmin/active_user_table.tmpl",{'response_data': response_data})
elif (b==1):
cursor = connection.cursor()
cursor.execute("SELECT core_user.id, name, mobile_number, COUNT(*) as count, created FROM core_user, core_useractivity WHERE core_user.id = core_useractivity.user_id AND DATE(created) = DATE(NOW())")
response_data = dictfetchall(cursor)
return render_to_response("siteadmin/active_user_table.tmpl",{'response_data': response_data})
else:
raise Http404
如果我要删除其他:部分它显示没有发送HttpResponse。我不知道会出现什么问题。
答案 0 :(得分:2)
arg b将是一个字符串,你假设它是一个数字。将数字转换为字符串,然后与b进行比较。例如b =='1'。
你显然缺乏调试技巧。如你所说,你是新手,请通过pdb模块。该模块在代码中放置了一个断点。
有很多有用的帖子,例如 - Getting started with the Python Debugger pdb
答案 1 :(得分:2)
请注意&#39; b&#39;在这种情况下,它将是一个字符串,因为它是URL的一部分,而不是整数。
如果您将测试更改为例如。 b=='1'
,如果Http404全部失败,请确保提升它们,然后事情应该按照您的预期进行。
答案 2 :(得分:2)
好像你的b不是这些值,这可能是未传递给视图的事实(这可以检查你的urls.py),甚至你应该把它放到int(b)如果它可能不明白它是什么。
在没有原始括号的情况下尝试“打印b”和“打印类型(b)”#并查看返回的内容
答案 3 :(得分:0)
正如Burhan Khalid首先提出的,我们从url mapper得到的值是一个字符串。因此,只需要进行更改就是在比较字符串中生成所有整数。