在django中是否有更好、更简单的方法来创建重复的视图集和URL?下面是我的视图和URL。正如您可能看到的,当前有两组视图和URL,如果不是针对不同的模型名称,它们将是相同的。有没有一种方法可以一次创建3个类作为mixin或类似的东西,这样我就可以添加一组新的类,只需将模型名传递给一个函数或子类?我能为URL做些类似的事情吗?我在这里发现了一个相关的问题Class Based Generic Views and DRY,但不确定这个问题的答案是否适用于这里,以及如何适用于这里,或者是否相关
视图中的相关部分:
class AlertMessageUpdate(LoginRequiredMixin, UpdateView):
template_name = "LibreBadge/applicationadmin/AlertMessage/alertMessageForm.html"
model = AlertMessage
fields = "__all__"
class AlertMessageCreate(LoginRequiredMixin, CreateView):
template_name = "LibreBadge/applicationadmin/AlertMessage/alertMessageForm.html"
model = AlertMessage
fields = "__all__"
class AlertMessageList(LoginRequiredMixin, ListView):
template_name = "LibreBadge/applicationadmin/AlertMessage/alertMessageList.html"
model = AlertMessage
class BadgeTemplateUpdate(LoginRequiredMixin, UpdateView):
template_name = "LibreBadge/applicationadmin/BadgeTemplate/badgeTemplateForm.html"
model = BadgeTemplate
fields = "__all__"
class BadgeTemplateCreate(LoginRequiredMixin, CreateView):
template_name = "LibreBadge/applicationadmin/BadgeTemplate/badgeTemplateList.html"
model = BadgeTemplate
class BadgeTemplateList(LoginRequiredMixin, ListView):
template_name = "LibreBadge/applicationadmin/BadgeTemplate/badgeTemplateList.html"
model = BadgeTemplate
URL.py中的相关部分:
url(r'^applicationadmin/alertmessages/update/(?P<pk>[-\w]+)/$', views.AlertMessageUpdate.as_view(), name='AlertMessageUpdate'),
url(r'^applicationadmin/alertmessages/create/$', views.AlertMessageCreate.as_view(), name='AlertMessageCreate'),
url('applicationadmin/alertmessages/$', views.AlertMessageList.as_view(), name='AlertMessageList'),
url(r'^applicationadmin/badgetemplates/update/(?P<pk>[-\w]+)/$', views.BadgeTemplateUpdate.as_view(), name='BadgeTemplateUpdate'),
url(r'^applicationadmin/badgetemplates/create/$', views.BadgeTemplateCreate.as_view(), name='BadgeTemplateCreate'),
url('applicationadmin/badgetemplates/$', views.BadgeTemplateList.as_view(), name='BadgeTemplateList'),
这个问题的答案将在LibreBadge,LibreBadge GitHub中使用,这是一个开源的、麻省理工学院许可的ID徽章解决方案。如果这是你的风格,请随意以拉式请求的形式回答这个问题
我找到了重复视图问题的解决方案
我创建了一个函数,该函数使用type动态创建基于类的视图(了解有关使用type创建类here)并将它们分配给字典
现在我只需要调用applicationAdminCRUDFunction并将其值赋给变量。然后我可以像这样调用url.py中的视图
为了解决重复的URL模式问题,我创建了一个函数来返回带有modelName参数的URL列表
然后,我通过使用include创建一个路径模式来调用该函数,并将applicationadmin函数作为参数传递给include
相关问题 更多 >
编程相关推荐