从vi中的模块扩展Django类

2024-06-25 05:59:55 发布

您现在位置:Python中文网/ 问答频道 /正文

在我看来,我试图扩展外部库提供的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')

和url.py文件:

from .views import KnowxThreadCreateView

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

如果我理解inherit过程,它应该正常工作?但是,如果两个类调用同一个url,Django在哪里选择要使用的函数呢

我有点不清楚


Tags: pyselfformviewidurlgettopic