2012-05-01 26 views
6

Trên trang của tôi, tôi cần hiển thị chi tiết bài đăng và biểu mẫu nhận xét để người xem đăng nhận xét. Tôi đã tạo 2 chế độ xem chung:Django - Đối số bắt trong lớp dựa trên 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'), 

.... 

Lỗi sẽ xảy ra trong Thêm chế độ xem xét vì tôi chưa chỉ định id của bài đăng cho nhận xét. Làm thế nào tôi có thể truy cập vào post_id trong AddCommentView?

Trả lời

18

self.kwargs['post_id'] hoặc self.args[0] chứa giá trị mà

Docs

+2

tuyệt vời !!! cảm ơn bạn rất nhiều –

+0

Bạn được chào đón! Nếu bạn có thêm câu hỏi, hãy hỏi. Bạn cũng có thể chấp nhận điều này nếu thấy hữu ích – San4ez

+0

Cảm ơn bạn! Liên kết tới tài liệu không hoạt động, không có phần nào trong dev hiện tại. Phiên bản tài liệu mới nhất với liên kết hoạt động là 1.4: https://docs.djangoproject.com/en/1.4/topics/class-based-views/#dynamic-filtering –

Các vấn đề liên quan