未解决的参考 - django

时间:2013-12-07 23:01:44

标签: python django

在django和python中的新内容并且不明白这个问题。

我有一个模特:

class User(models.Model):
    nick = models.CharField(max_length=50)
    age = models.IntegerField() 

我正在尝试检查是否已经输入了同名的用户:

def addUser(request):

    nick1 = request.GET['nick']
    age1 = request.GET['age']

    newUser = User()

    newUser.nick = nick1
    newUser.age = age1
    if User.objects.filter(nick=newUser.nick).count()>0

    newUser.save()

我无法继续if语句,因为它告诉我有一个

  

未解决的参考'newUser'

我在这里做错了什么?

2 个答案:

答案 0 :(得分:3)

我建议您清理格式。假设您的格式在代码中是正确的,并且没有正确地转换为堆栈溢出,那看起来应该可以正常工作。

请注意,更好的方法可能是:

newUser,created = User.objects.get_or_create(nick=nick1)
if created: #note the colon at the end and the next lines are indented
   newUser.age = age
   newUser.save()
   # e.g. return response indiciating user was created
else:
   # e.g. return a response indiciating that nick already taken

这假定给定缺口只有1个用户(如果不是这样,将抛出异常,这可能是你想要的,也可能不是你想要的)。另请注意,如果您的体验与我的相似,当您提高对我将要称之为Django之道的理解时,您会找到更好的方法来使用模板做很多事情,所以即使上面的代码过多也是如此写。

答案 1 :(得分:0)

你必须这样做:

  def adduser(request):
    nick1 = request.GET['nick']
    age1 = request.GET['age']

    if User.objects.filter(nick=nick1)>0:
      # retur response to user exist
    else:
      User.objects.create(nick=nick1,age=age1)
      # return response user created

请记住在python中使用正确的缩进,并且始终在每个: for`语句后放置if, or