0

私はジャンゴを使用しています。django ユーザー アクセス レベルに基づいて使用するテンプレートを設定しようとしています。ご覧のとおり、LoginRequiredMixin と generic.TemplateView を使用しています。

これは私がやりたいことです:

このコードは、views.py で使用されます。

class TableView(LoginRequiredMixin, generic.TemplateView):
    if user.is_superuser == True:
        template_name = 'achtable.html'
    elif user.is_authenticated:
        template_name = 'userachtable.html'

残念ながら、ユーザーにアクセスできないようです。このように。

views.py には、ユーザー認証に基づいて期待どおりに機能する API ビューもあります。それは次のとおりです。

class MyList(LoginRequiredMixin, generics.ListCreateAPIView):
    serializer_class = MySerializer
    def get_queryset(self):
        if self.request.user.is_superuser==True:
            queryset = ImportantStuff.objects.all()
            return queryset
        elif self.request.user.is_authenticated():
            queryset = ImportantStuff.objects.all()
            return queryset.filter(claimed=False)

どんな入力でも大歓迎です。ありがとうございました。

4

1 に答える 1

1

リクエストが必要なので、MyList で行ったように行います (関数を使用します)。

class TableView(LoginRequiredMixin, generic.TemplateView):
    def get_template_names(self):
        if self.request.user.is_superuser:
             return 'superadmin/path/template.html'
        return 'regular/path/template.html'

ところで:

if self.request.user.is_superuser==True:

(より良いバージョン) と同じです:

if self.request.user.is_superuser:

を使用するLoginRequiredMixinと、ユーザーが認証されていることがすでにわかっているため、2 番目のifステートメントは役に立ちません。

ここでMyList更新されます:

class MyList(LoginRequiredMixin, generics.ListCreateAPIView):
    serializer_class = MySerializer
    def get_queryset(self):
        if self.request.user.is_superuser:
            return ImportantStuff.objects.all()
        return ImportantStuff.objects.filter(claimed=False)
于 2015-07-21T03:10:17.067 に答える