0

我是 python 和 Django 的新手,如果只是有些愚蠢,请宽恕。这是我在views.py 中的代码。它显示页面未找到 404 错误。有没有语法错误。

在这里,根据 b 的不同值,我正在查询我正在渲染的不同数据。

视图.py

@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

如果我要删除 else: 部分它显示没有发送 HttpResponse。我不知道有什么问题。

4

4 回答 4

2

arg b 将是一个字符串,您假设它是一个数字。将数字转换为字符串,然后与 b 进行比较。如 b == '1'。

你显然缺乏调试技能。正如你所说,你是新手,请通过 pdb 模块。该模块在您的代码中放置了一个断点。

有很多有用的帖子,例如 - Python Debugger pdb 入门

于 2013-02-07T09:39:17.357 回答
2

请注意,在这种情况下,'b' 将是一个字符串,因为它是 URL 的一部分,而不是整数。如果您将测试更改为例如。b=='1',并确保在它们都失败时引发 Http404,那么事情应该会按您的预期进行。

于 2013-02-07T09:39:31.963 回答
2

看起来你的 b 不是这些值,这可能是没有传递给视图的事实(你可以在你的 urls.py 中检查)或者你应该把它放到 int(b) 如果可能的话不明白它是什么。

试试 "print b" 和 "print type(b)" # 没有你原来的括号,看看你返回了什么

于 2013-02-07T09:39:38.030 回答
0

正如 Burhan Khalid 首先建议我们从 url 映射器获得的值是一个字符串。因此,唯一需要更改的是在比较字符串中生成所有整数。

于 2013-02-07T09:49:38.913 回答