在我看来,我试图扩展外部库提供的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在哪里选择要使用的函数呢
我有点不清楚
很简单,你不能有两个视图使用同一个URL。如果需要由单独的视图提供单独的功能,请定义单独的URL
相关问题 更多 >
编程相关推荐