Передача шаблонных переменных из URL в FormPreview в Django - PullRequest
1 голос
/ 28 октября 2011

Я нуб Джанго и боюсь, что ответ на мой вопрос довольно очевиден, но надеюсь, что кто-то может помочь.

Я создаю приложение, которое включает в себя одну и ту же форму на каждой странице, причем содержимое, окружающее форму, и экземпляр модели, к которому привязаны данные формы, зависят от значения, переданного в URL. Работает нормально, используя стандартный класс Form и (URL, 'template.html', myapp.view) в URLconf, например так:

url(r'^listings/(?P<listing_id>\d+)/submit$', 'myapp.views.lister'), 

Однако с помощью FormPreview вместо вызова представления в URLconf вы вызываете подкласс с функциональностью представления, встроенной в него.

url(r'^listings/(?P<listing_id>\d+)/submit$', PickFormPreview(PickForm)), 

Из того, что я могу извлечь из документов, FormPreview использует parse_params для передачи значений, захваченных в URL, в state.self, который, я считаю, является словарем. К сожалению, учитывая мой уровень опыта, я не могу понять из этого базового понимания, как настроить мой подкласс FormPreview, как передать list_id, захваченный в URL, в переменную шаблона в моем шаблоне form.html, вызванном FormPreview. Нужно ли как-то переопределять parse_params? Или как-то передать state.listing_id? Или я скучаю по нему целиком?

Любая помощь высоко ценится!

1 Ответ

0 голосов
/ 28 октября 2011

Вы на правильном пути. Метод parse_params в FormPreview ничего не делает, но это правильный метод для переопределения в вашем подклассе.

В следующем примере сохраняется listing_id в self.state.listing_id, что доступно в контексте шаблона.

class PickFormPreview(FormPreview):
    def parse_params(self, *args, **kwargs)
        """
        Saves listing_id from the url to state
        """
        self.state['listing_id'] = kwargs['listing_id']

Затем в вашем шаблоне вы получаете к нему доступ:

Listing {{state.listing_id}}

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