Пытаюсь использовать представления в django, как я использую для использования в python

#python #django #django-views

#python #django #django-представления

Вопрос:

почему это не работает? Предполагается, что это сработает, в python я могу использовать это как эту функцию, может кто-нибудь объяснить мне, пожалуйста?

число просмотров:

 class MiVista(View):
    def get(self, request, var):
        self.var = 'Hello'
        # <la logica de la vista>
        return HttpResponse(self.var)

one = MiVista()
one.get(222222)
  

url-адреса:

 url(r'^indice/', MiVista.as_view()),
  

Значит, функции не работают, как функции в python, используя POO?

Спасибо, ребята!

Комментарии:

1. Да, они это делают. Но, как и любая другая функция в python, вам нужно передавать правильные аргументы. В вашем случае get() принимает два аргумента, и вы передаете ему один. И, кроме того, вы не передаете второй аргумент в своих URL-адресах.

Ответ №1:

Итак, как упоминал @MadWombat, вы передаете недостаточно аргументов, поэтому вам нужно передать self , которые уже передаются путем вызова из объектов экземпляра, request (не передавая), var (передавая). И поскольку вы не указываете, что вы передаете var=2222 , python считает, что 2222 это request аргумент.

Итак, в основном вам нужно создать request аргумент. Вы можете сделать это с RequestFactory помощью . Вот так

 from django.test import RequestFactory
from django.views.generic import View


class MiVista(View):
    def get(self, request, var):
        self.var = var
        # <la logica de la vista>
        return HttpResponse(self.var)

rf = RequestFactory()
rf.get('indice/')

one = MiVista.as_view()(rf, var='hello')