在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'
我在这里做错了什么?
答案 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
。