W moim urls.py
Mam niektóre wpisy takie jak:DRY podejście do Django
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'),
ten powtarza się dla wielu standardowych modeli, w których po prostu trzeba uzyskać informacje, lista go i móc edytować i usuwać to.
w moim 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'
To wszystko powtarza za tym wzorcem. Tak więc dla 3 modeli będę miał 3 razy w większości identyczny kod z niewielkimi zmianami.
Jak mogę przestać się powtarzać?
nie wiem, to wygląda całkiem DRY do mnie. Jeśli pojawi się jakikolwiek osuszacz, będzie to susza :-) – e4c5
Pomyślałem o może tych trzech widokach, ale tylko zmieniając Model lub coś takiego, cóż, mógłbym spróbować umieścić wszystko w urls.py, jak widok ogólny listy, ale to wydaje się jak jak DRY, jak mogłem to zrobić ... –