【发布时间】:2015-09-10 06:59:08
【问题描述】:
在我的urls.py 我有一些这样的条目:
url(r'auftragsarten/list/$', generic.ListView.as_view(
queryset=Auftragsart.objects.order_by('name'),
paginate_by=25),
name='auftragsarten_liste'),
url(r'^auftragsarten/form/$',
views.auftragsarten_form,
name='auftragsarten_form'),
url(r'auftragsarten/update/(?P<pk>[\d]+)/$',
views.AuftragsartUpdateView.as_view(),
name='auftragsarten_update'),
url(r'auftragsarten/delete/(?P<pk>[\d]+)/$',
views.AuftragsartDeleteView.as_view(),
name='auftragsarten_delete'),
这对于很多标准模型重复,我只需要获取信息、列出信息并能够编辑和删除它。
在我的views.py:
def auftragsarten_form(request):
form = AuftragsartenForm(request.POST or None)
if form.is_valid():
form.save()
return redirect('auftragsverwaltung:auftragsarten_liste')
else:
print(form.errors)
return render(request, 'generic_form_template.html', {'form': form})
class AuftragsartUpdateView(UpdateView):
model = Auftragsart
fields = '__all__'
success_url = reverse_lazy('auftragsverwaltung:auftragsarten_liste')
template_name = 'generic_update_view.html'
class AuftragsartDeleteView(DeleteView):
model = Auftragsart
success_url = reverse_lazy('auftragsverwaltung:auftragsarten_liste')
template_name = 'generic_confirm_delete.html'
这一切都在这个模式之后重复。因此,对于 3 个模型,我将有 3 次大部分相同的代码,只需进行微小的更改。
我怎样才能停止重复自己?
【问题讨论】:
-
我不知道,这对我来说看起来很干。如果它变得更干燥,那将是干旱:-)
-
我想到了这三个视图,但只更改了模型或其他东西,我可以尝试将它们全部放在 urls.py 中,就像 generic_list 视图一样,但这似乎尽可能 DRY让它...