

djangoのルーティングで、path()に独自の関数を指定して、そこでrequestを受け取って処理を加えてからクラスビューを呼び出したいと思っています。  
下記ソースでurlにアクセスすると、エラーとなります。  
やりたいこととしては、別関数でrequestを受け取りつつ関数内で、クラスビュー.as_view()がしたいです。  
お助け願います。

[code]

    from django.urls import path
    from django.contrib.auth.decorators import login_required
    from . import views
    
    app_name='test'
    
    def aaa(request):
    　　if request.user.i == 0:
            return 'urｌ'
        else:
            return views.TestListView.as_view() ←　"this is where the error happen."
    
    urlpatterns = [
        path('', aaa, name='test'),
    ]
    
[/code]

[code]

    Internal Server Error: /alcohol/
    Traceback (most recent call last):
      File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/core/handlers/exception.py", line 47, in inner
        response = get_response(request)
      File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/utils/deprecation.py", line 116, in __call__
        response = self.process_response(request, response)
      File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/middleware/clickjacking.py", line 26, in process_response
        if response.get('X-Frame-Options') is not None:
    AttributeError: 'function' object has no attribute 'get'
    
[/code]


CC BY-SA 4.0
2021-04-08T01:31:17.130
75156
2023-11-19T07:01:45.227
2021-04-09T04:09:45.587
3060
44688
question
python django
Django AttributeError: 'function' object has no attribute 'get'について


`views.TestListView.as_view()`の戻り値は関数です。requestを引数にしてこれを呼ぶ必要があります。つまり

`return views.TestListView.as_view()(request)`

とすればいいでしょう。


CC BY-SA 4.0
2021-04-09T03:06:03.690
75173
2021-04-09T03:06:03.690
9464
75156
answer