在我看来,从模块扩展Django类



我正在尝试扩展一个从外部库中提供的Django类,以添加一些东西。这是我第一次做这种事情,我需要一些帮助。

在我的外部模块中

我有名为 EdqmThreadCreateView的课程:

class EdqmThreadCreateView(ForumPermissionMixin, ThreadCreateView):
    def __init__(self):
        super(EdqmThreadCreateView, self).__init__()
        self.form_class.base_fields['body'].label = 'Message'
    def get_initial(self):
        """
        Returns the initial data to use for forms on this view.
        """
        initial = self.initial.copy()
        # Get default topic
        topic_id = self.request.GET.get('topic', None)
        if topic_id:
            initial['topic'] = int(topic_id)
        return initial
    def form_valid(self, form):
        """ Save form if it is valid """
        thread = form.save(self.request.user)
        url_redirect = get_absolute_url(thread)
        return HttpResponseRedirect(url_redirect)

此类在外部模块的urls.py文件中:

urlpatterns = [
    url(r'^forum/new', EdqmThreadCreateView.as_view(), name='forum-create-thread'),
    ...
]

在我的django应用中

我想使用以前的代码,但是我想添加一些内容:更改URL,添加变量,...

在我的views.py文件中,我写了一个非常简单的例子,看看我的课程是否被称为:

from edqm.forum.views import EdqmThreadCreateView
class KnowxThreadCreateView(EdqmThreadCreateView):
    def form_valid(self, form):
        print('this is the class used')

和urls.py文件:

from .views import KnowxThreadCreateView
urlpatterns = [
        url(r'^forum/new', KnowxThreadCreateView.as_view(), name='forum-create-thread'),
]

如果我理解继承过程,它应该有效吗?但是,django在哪里选择如果两个类别称为同一URL的函数?

对我来说有点不清楚

很简单,您 使用相同的URL具有两个视图。如果您需要单独的视图提供的单独功能,请定义单独的URL。

最新更新