2017-06-28 10 views
-1

Django and pythonを使用してクエリーセットと異なる値を取得する必要があります。ここで私は何かをやっていますが、印刷中に空白のデータを取得しています。DjangoとPythonを使用してクエリセットから各値を取得する方法

私は以下のコードを説明しています。

def loginsave(request): 
    if request.method == 'POST': 
     uname = request.POST.get('uname') 
     password = request.POST.get('pass') 
     per = User.objects.all().filter(Q(password__icontains=password) & Q(uname__icontains=uname)).count() 
     if per > 0: 
      return render(request, 'plant/home.html', 
          {'count': per}) 
     else: 
      user_count = User.objects.all().filter(Q(password__icontains=password) | Q(uname__icontains=uname)).count(); 
      if user_count > 0: 
       user = User.objects.all().filter(Q(password__icontains=password) | Q(uname__icontains=uname)) 
       print (user) 
      else: 
       return render(request, 'plant/login.html', {'message' : "You are not a registered user ."}) 

は、ここに私の要件は、ユーザーがpassword or usernameを一致させることによりデータを取得するとき、それはすべての列の値にアクセスする必要があります。ここでは<QuerySet [<User: User object>, <User: User object>]>のような印刷値が得られます。私を助けてください。

+4

同じパスワードとuname? –

+2

'user'変数には2つのオブジェクトがあります。ループすることで個々の' User'オブジェクトを取得できます。いずれにせよ、あなたは***本当に***組み込みのDjango認証システムを使用するべきです。それを自分で行うことは、起こるのを待っている災害です。 –

+0

Dajngosのデフォルトを使用しないために、1つはrequiremntで所有します。 – subhra

答えて

0

組み込みのDjango認証システムを使用することを強くお勧めします。

あなた自身で作る必要があるとしても、実際にはほとんど何も学ばずに、この認証システムを作る方法を変える必要があります。あなたのコードに多くの間違いがあり、生産を続けると深刻な問題を引き起こします。

だけデータを印刷上の問題のために:

https://docs.djangoproject.com/en/1.11/ref/models/instances/#str

モデルにこれを追加します。

def __str__(self): 
    return str(self.username) 

# if python 3 then you can remove this one 
def __unicode__(self): 
    return str(self.username) 

これは、あなたがそれを変更することができる唯一のユーザ名

を返します。あなたが好きなもの。

def __str__(self): 
    return "Username is: " + str(self.username) + " Password is: " + str(self.password) 

def __unicode__(self): 
    return "Username is: " + str(self.username) + " Password is: " + str(self.password) 

そして、あなたはそれを印刷するとき、これを返します。例:

ユーザー名は次のとおりです。TheUserNameパスワードは次のとおりです。あなたが持つ2人のユーザーを持っていないのはなぜ123456789

+0

私は彼が別の行のコードを書く前に彼が止めて読むべきだと言います。ユーザー名とパスワードに単一の文字を入力するだけで、誰でもどのユーザーにも一致させることができるicontainsを使用してクエリを実行しています。 – kagronick

+0

はい、あなたは正しいです。私は他の方法を彼が使用しようとしている方法よりも間違って考えることはできませんが、私たちはすべて最初から悪いミスを抱えていました。これらの間違いは、あなたが言ったように読むことと、あなたが得ることができるすべての助けを得ることによって、一つずつ解決することができます。私は答えにいくつかの警告を追加します。 @ kagronick – Navid2zp

+0

あなたの場合でも、パスワードを印刷することはできません。それは塩漬けされ、ハッシュされるべきです。 – kagronick

関連する問題