user.is_authenticated()
かどうかを確認しようとしてuser.has_perm()
いますが、django クラスベースの生成ビューを拡張することは不可能のようです。request
が表示される場所で見つけた唯一の方法はget()
.
class MyDetailView(DetailView):
def get(self, request, **kwargs):
import pdb
pdb.set_trace()
self.object = self.get_object()
context = self.get_context_data(object=self.object)
return self.render_to_response(context)
ログインしているかどうかに関係なく、それrequest.user
がインスタンスであることがわかりました。AnonymusClass
(Pdb) request.user.__class__
<class 'django.contrib.auth.models.AnonymousUser'>
したがって、認証またはパーマのチェックは常に失敗します。
(Pdb) self.request.user.is_authenticated()
False
get_object()
、などの他のメソッドをオーバーライドしようとしましget_context_data()
た。私はそれらのそれぞれにself.request
利用可能な属性がありますが、user
まだAnonymus
.
だから私の質問は次のとおりです:ユーザーがクラスベースのビューを使用してログインしているかどうかを確認するにはどうすればよいですか!?
(戻って)関数ベースのビューを使用する必要があるということですか?
私は使用Python 2.7.1+
していますDjango version 1.4 pre-alpha SVN-16627
EVIAAC の投稿への回答:
Using login_required
or permissions_required
decorators is not an option. オブジェクトを取得した後、アクセス許可/ログオンを確認する必要があります。オブジェクトに boolean フィールドregistration_required
が設定されている場合、要求されたTrue
ユーザーのみがページを表示できるようになり、他のユーザーはログオン ページにリダイレクトされます (動作例は から借用django.contrib.flatpages
)。