Использование пользовательского представления классов в django выдает ошибку - PullRequest
0 голосов
/ 23 марта 2019

Я изучаю django и пытаюсь создать свой собственный класс в файле views.py

Этот класс, который я бы использовал, должен иметь метод, один для классического рендеринга HTML, а другой для ответа json

мой класс в views.py

class myListView():
    context = {}
    def __init__(self, request):
        request = request
        context['PageTitle'] = 'Contacts'
        context['people'] = People.objects.all()

    def htmlRender(self, *args, **kwargs):
        context['children_template'] = 'people/list.html'
        return render(request,'base.html',context)

    def jsonRender(self, *args, **kwargs):
        return HttpResponse(json.dumps(self.context['people']), content_type="application/json")

my urls.py

    path('list', login_required(myListView.htmlRender()), name='list'),
    path('list/json', login_required(myListView.jsonRender()), name='list'),

Вот ошибка, отправленная отладчиком:

TypeError: htmlRender() missing 1 required positional argument: 'self'

Понятия не имею, как решить эту проблему, может быть, я мечтаю использовать пользовательский класс в поле зрения?

Thanks'you

Ответы [ 2 ]

1 голос
/ 23 марта 2019
from django.views.generic import ListView

class myListView(ListView):

Возможно, вы не расширяете класс ListView, попробуйте это.

0 голосов
/ 23 марта 2019

Вы должны сначала создать экземпляр из класса "myListView", а затем использовать его:

myListViewInstance = myListView(arguments)

myListViewInstance.htmlRender()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...