DjangoのListViewの超詳細な使い方(改ページpagiteを含む)
開発環境: python 3.6 django 1.11 シーン1
データベースから多くのデータを取得して、フロントエンドにリスト形式で表示されます。例えば、すべてのユーザを取得し、ユーザーリストページに表示されます。
ソリューション
一般的な書き方は、DjangoのORMですべてのデータを調べて見せます。コードは以下の通りです。
シーン2:
データをフィルタしたいですが、ListViewはどうやって実現しますか?コードは以下の通りです
シーン3
Templateに戻るデータは複数必要です。user_uだけではありません。リストは、他のデータがあるかもしれません。現在ログインしているユーザの詳細情報を取得する場合、どうやって操作しますか?コードは以下の通りです
シーン4
インターフェースの要求方式を制限したいです。例えば、制限はGETのみでアクセスできます。コードは以下の通りです。
カードのカードはすべてのデータを元のページに戻しましたが、前のページの中で一番いいのは改ページ展示です。どうすればいいですか?
ここで、DjangoのListViewの超詳細な使い方について紹介します。これはDjangoのListViewの使い方についてです。以前の文章を検索したり、次の関連記事を見たりしてください。これからもよろしくお願いします。
データベースから多くのデータを取得して、フロントエンドにリスト形式で表示されます。例えば、すべてのユーザを取得し、ユーザーリストページに表示されます。
ソリューション
一般的な書き方は、DjangoのORMですべてのデータを調べて見せます。コードは以下の通りです。
def user_list(request):
""" UserProfile """
users = UserProfile.objects.all()
return render(request, 'talks/users_list.html', context={"user_list": users})
このように問題を解決することができますが、Djangoはこのような常用シーンに対して、より速くて便利な方法を提供しています。それはListViewです。使い方は以下の通りです。
from django.views.generic import ListView
class UsersView(ListView):
model = UserProfile
template_name = 'talks/users_list.html'
context_object_name = 'user_list'
これで上の機能を完成しました。コードはとても簡潔です。シーン2:
データをフィルタしたいですが、ListViewはどうやって実現しますか?コードは以下の通りです
from django.views.generic import ListView
class UsersView(ListView):
model = UserProfile
template_name = 'talks/users_list.html'
context_object_name = 'user_list'
def get_queryset(self): # get_queryset
# is_deleted False ,
return UserProfile.objects.filter(is_deleted=False).order_by('-create_time')
データに対してもっと次元のフィルタリングをするなら、例えば、ユーザーはある部門のものであり、性別が男性である場合には、Djangoが提供するQ関数を使って実現することができます。シーン3
Templateに戻るデータは複数必要です。user_uだけではありません。リストは、他のデータがあるかもしれません。現在ログインしているユーザの詳細情報を取得する場合、どうやって操作しますか?コードは以下の通りです
from django.views.generic import ListView
class UsersView(ListView):
model = UserProfile
template_name = 'talks/users_list.html'
context_object_name = 'user_list'
def get_context_data(self, **kwargs): # get_context_data
# ,
context = super().get_context_data(**kwargs)
username = self.request.GET.get('user', None)
context['user'] = UserProfile.objects.get(username=username
return context
このように、あなたがTemplateページに戻る時、contextは「'user_」に含まれます。list':user_list,'user':user'。シーン4
インターフェースの要求方式を制限したいです。例えば、制限はGETのみでアクセスできます。コードは以下の通りです。
from django.views.generic import ListView
class UsersView(ListView):
model = UserProfile
template_name = 'talks/users_list.html'
context_object_name = 'user_list'
http_method_names = ['GET'] # ,
シーン5カードのカードはすべてのデータを元のページに戻しましたが、前のページの中で一番いいのは改ページ展示です。どうすればいいですか?
ここで、DjangoのListViewの超詳細な使い方について紹介します。これはDjangoのListViewの使い方についてです。以前の文章を検索したり、次の関連記事を見たりしてください。これからもよろしくお願いします。