2017-04-24 6 views
1

私は問題を抱えています。標準のdjango.contrib.auth.models.Userモデルを使用して、ユーザー名が「x」のユーザーのSqliteデータベースを照会します。

ユーザ名を入力してユーザを検索できるページをユーザに提示します。

しかし、私はこれを行う方法の頭を包むことはできません。ビューから、データベースからユーザーを取得するクエリが実行される関数を提供しますか?たとえば、彼のユーザー名またはIDを取得し、彼のプロフィールページに行く?私はこれを行う方法を把握することができない、私はこれで例を探していたが、私は何かを見つけることができないので、私はここに誰かが私を助けることを願っています!

答えて

1

はい、最も単純なレベルでは、フィールドの値をとり、User.objects.get(username=my_variable)のようなものを実行するフォーム提出を受け入れ、その結果を返します。 try/exceptブロックにコールをラップすると、そのユーザー名がそのようなユーザーが存在しない場合は、表示が吹き飛ばされません。 Djangoはshortcut function for doing just thisを提供しているので、上記の行の代わりにuser = get_object_or_404(User, username=my_variable)を実行できます。あなたの全景はあなたにも提出にいくつかの検証を行うためにはDjango formを作成し、それが簡単にあなたのフォームをレンダリングすることになるかもしれない。実際に

from django.shortcuts import render, get_object_or_404 

def username_search(request): 
    # if there are any form values sent in a GET 
    if request.GET: 
    my_variable = request.GET.get('username', '') 
    user = get_object_or_404(User, username=my_variable) 
    else: 
    user = None 
    return render(request, 'some_template.html', {'user': user} 

ようになります。

+0

こんにちはトム、ご意見ありがとうございます。私はそれが私の最初の質問に答えるので正解としてそ​​れを受け入れました。しかし、私はあまりに簡単に質問したかもしれません。もしあなたがそうするなら、コメントで私は状況と私が何をしようとしているのかを説明しようとします。 ユーザーがユーザーを検索できるページ - ユーザーが選択したユーザーごとにフォームがクリアされ、他のユーザーも検索できるようになり、フォームを送信すると、選択したユーザーはすべて次のページに渡されます。 これを達成する方法を教えてください。 – Zeretil

関連する問題