#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')