2012-05-01 4 views
6

На моей странице мне нужно отобразить детали сообщений и форму комментариев для просмотра, чтобы оставлять комментарии. Я создал 2 общих взгляды:Django - аргумент Catch в классе FormView

# views.py 
class PostDetailView (DetailView): 
    model = Post 
    context_object_name = 'post' 
    template_name = 'post.html' 

    def get_context_data(self, **kwargs): 
    context = super(PostDetailView, self).get_context_data(**kwargs) 
    context['comment_form'] = CommentForm() 
    return context 

class AddCommentView(FormView): 
    template_name = 'post.html' 
    form_class = CommentForm 
    success_url = '/' 

    def form_valid(self, form): 
    form.save() 
    return super(AddCommentView, self).form_valid(form) 

    def form_invalid(self, form): 
    return self.render_to_response(self.get_context_data(form=form)) 

detail = PostDetailView.as_view() 
add_comment = AddCommentView.as_view() 


# urls.py 
.... 
url(r'^(?P<pk>\d+)/$', view='detail'), 
url(r'^(?P<post_id>\d+)/add_comment/$', view='add_comment'), 

.... 

ошибка будет возникать в AddCommentView, так как я не указал идентификатор Почты для комментария. Как я могу получить доступ к post_id в AddCommentView?

ответ

18

self.kwargs['post_id'] или self.args[0] содержит, что ценностные

Docs

+2

удивительным !!! большое спасибо –

+0

Добро пожаловать! Если у вас есть еще вопросы, задайте вопросы. Вы также можете принять этот, если найдете полезным – San4ez

+0

Спасибо! Ссылка на документы не работает, в текущем dev нет такого раздела. Последняя версия документации с рабочей ссылкой - 1.4: https://docs.djangoproject.com/en/1.4/topics/class-based-views/#dynamic-filtering –