Django代码中的语法错误?

时间:2013-02-07 09:29:14

标签: python django

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

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

views.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

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

4 个答案:

答案 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得到的值是一个字符串。因此,只需要进行更改就是在比较字符串中生成所有整数。