2011-07-16 9 views
3

ListViewを使用して、かなり単純なページを表示するのを避けようとしています。 基本的には、現在のユーザーに関連する一連のオブジェクトをリストしたいと思いますが、urls.py内からセッション値にアクセスする方法がわかりません。私は何をする必要がありますどのようなDjango - Access session in urls.py

(r'^myrecords/$', ListView.as_view(
     queryset=Record.objects.filter(CURRENT LOGGED IN USER), 
     context_object_name='record_list', 
     template_name='records.html')), 

:私が持っているもの

は次のようになりますか?

これにlogin_requiredデコレータを適用する方法はありますか?

アドバイスをいただければ幸いです。

ありがとうございました。

答えて

4

dynamic filteringのドキュメントを参照してください。

ListViewをサブクラス化し、get_querysetメソッドをオーバーライドする必要があります。クラスベースのビューが呼び出されると、現在のリクエスト(self.request)とURL(self.argsself.kwargs)からキャプチャされたものが、selfに読み込まれます。

from django.views.generic import ListView 
from myapp.models import Record 

class MyRecordsListView(ListView): 
    context_object_name = 'record_list' 
    template_name = 'records.html', 

    def get_queryset(self): 
     return Record.objects.filter(user=self.request.user) 

decorating class-based viewsのドキュメントもあります。非常に有用であった

(r'^myrecords/$', login_required(MyRecordsListView.as_view())), 
+0

おかげで、:基本的にはあなたは自分のurls.pyas_viewの結果を飾ることができます。 – Dan

関連する問題