Представление класса Django: __init__
Я хочу получить <Model>
значение из URL и использовать его как __init__
параметр в моем классе.
urls.py
url(r'^(?P<Model>\w+)/foo/$', views.foo.as_view(), name='foo_class'),
views.py
class foo(CreateView):
def __init__(self, **kwargs):
text = kwargs['Model'] # This is not working
text = kwargs.get('Model') # Neither this
Bar(text)
...
Понятно, что я что-то упустил, или мое понимание URL <>
классовое представление неверно.
1 ответ
Решение
Вы должны переопределить dispatch
метод для таких случаев использования.
class Foo(CreateView):
def dispatch(self, request, *args, **kwargs):
# do something extra here ...
return super(Foo, self).dispatch(request, *args, **kwargs)
Однако для вашего конкретного сценария вы можете получить прямой доступ self.kwargs
поскольку общие представления автоматически назначают их в качестве переменной экземпляра в экземпляре представления.