Python Django代码中的语法错误?

Python Django代码中的语法错误?,python,django,Python,Django,我是python和Django的新手,如果这只是一些愚蠢的行为,请原谅。 这是我在views.py中的代码。其显示页面未找到404错误。有语法错误吗 在这里,根据b的不同值,我查询不同的数据,我呈现了_到_的响应 views.py @csrf\u豁免 def active_user_表格(请求,b): if request.method!=“获取”: 提高Http404 print(b)//只需检查函数的正确值。这是在shell中打印的。 如果(b==4): 打印(“你好,世界!”) curso

我是python和Django的新手,如果这只是一些愚蠢的行为,请原谅。 这是我在views.py中的代码。其显示页面未找到404错误。有语法错误吗

在这里,根据b的不同值,我查询不同的数据,我呈现了_到_的响应

views.py
@csrf\u豁免
def active_user_表格(请求,b):
if request.method!=“获取”:
提高Http404
print(b)//只需检查函数的正确值。这是在shell中打印的。
如果(b==4):
打印(“你好,世界!”)
cursor=connection.cursor()
cursor.execute(“选择core_user.id、name、mobile_number、COUNT(*)作为计数,从core_user、core_useractivity创建,其中core_user.id=core_useractivity.user_id按用户分组\u id按计数顺序描述”)
响应\u数据=dictfetchall(光标)
返回render_to_response(“siteadmin/active_user_table.tmpl”,{'response_data':response_data})
elif(b==3):
打印(“你好,世界!”)
cursor=connection.cursor()
cursor.execute(“选择core_user.id、name、mobile_number、COUNT(*)作为COUNT,从core_user、core_useractivity创建,其中core_user.id=core_useractivity.user_id和MONTH(CAST(创建为日期))=MONTH(现在())和YEAR(CAST(创建为日期))=YEAR(现在())按用户id分组按计数说明)
响应\u数据=dictfetchall(光标)
返回render_to_response(“siteadmin/active_user_table.tmpl”,{'response_data':response_data})
elif(b==2):
cursor=connection.cursor()

cursor.execute(“选择core_user.id,name,mobile_number,COUNT(*)作为COUNT,由core_user,core_useractivity创建,其中core_user.id=core_useractivity.user_id和DATEDIFF(NOW(),created)参数b将是一个字符串,您假设它是一个数字。将数字转换为字符串,然后与b比较。例如b='1'

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

这里有很多有用的帖子,比如-

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

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

这里有很多有用的帖子,比如-

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

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

似乎您的b不是这些值中的任何一个,这可能是未传递到视图的事实(您可以在URL.py中检查此项),甚至您应该将其设置为int(b)如果它可能不明白它是什么


尝试“print b”和“print type(b)”#不使用原始括号,查看返回的内容

似乎b不是这些值中的任何一个,这可能是因为没有传递给视图(您可以在URL.py中检查这一点),或者如果它不理解它是什么,甚至应该将其设置为int(b)


尝试“打印b”和“打印类型(b)”"#不带原始括号,查看您返回的内容。

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

Burhan Khalid第一次建议我们从url映射器获得的值是一个字符串。因此,只需要更改至于在比较字符串中生成所有整数。

您是否将url路由添加到
url.py
?如果您只是在浏览器中键入url,它将返回
404
,因此请确保您正在
向其发布内容。其次,不确定您为什么不使用django的ORM(您知道它可以吗?).最后,将
b==1
替换为
int(b)==1
因为
1
是一个数字,你从URL映射器中得到的是字符串
'1'
。顺便说一句,复制粘贴时可能出了问题,但看起来你的
else
语句缩进了一个空格。这实际上会引起语法错误,所以可能是复制粘贴,但我建议ise使用4个空格进行缩进;不要在if语句等中的表达式周围加括号。通读一遍。请不要在
if
elif
中使用括号。您不需要编写
if(x==1):
如果x==1:
就足够了。关于选项卡和空格,你应该看看。你是否将url路由添加到
url.py
?如果你只是在浏览器中键入url,它将返回
404
,因此请确保你正在
向它发布内容。其次,不确定你为什么不使用django的ORM(你知道它可以吗?)。最后,用
int(b)替换
b==1
==1
因为
1
是一个数字,你从URL映射器中得到的是字符串
'1'
。顺便说一句,复制粘贴时可能出了问题,但看起来你的
else
语句缩进了一个空格。这实际上会引起语法错误,所以可能是复制粘贴,但我建议ise使用4个空格进行缩进;不要在if语句中的表达式周围加括号等。通读一遍。请不要在
if
elif
中使用括号。如果(x==1),您不需要编写
if(x==1):
如果x==1:
就足够了。关于制表符和空格,您应该看看。
@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