Django - CreateView - Как объявить переменную и использовать ее в шаблонах - PullRequest
7 голосов
/ 04 марта 2012

Как мне объявить переменную в Django Createview, чтобы я мог использовать ее из ее шаблона? Например, я хочу использовать {{place_slug}} в шаблоне. Я передаю это из urls.py, как показано ниже:

urls.py:

urlpatterns = patterns('',
    (r'^new/(?P<place_slug>[\w\-\_]+)/?$', PictureCreateView.as_view(), {}, 'upload-new'),
)

views.py:

class PictureCreateView(CreateView):
    model = Picture

    def dispatch(self, *args, **kwargs):
        self.place = get_object_or_404(Place, slug=kwargs['place_slug'])
        return super(PictureCreateView, self).dispatch(*args, **kwargs)

    def form_valid(self, form):
        more code here

1 Ответ

15 голосов
/ 04 марта 2012

Переопределить get_context_data и установить context_data ['place_slug'] = your_slug

Примерно так:

def get_context_data(self, **kwargs):
    context = super(PictureCreateView, self).get_context_data(**kwargs)
    context['place_slug'] = self.place.slug
    return context

Дополнительная информация об этом содержится в Django документах .

...