В моей urls.py
У меня есть несколько записей, как эти:DRY подход к Джанго
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 раза больше идентичный код с незначительными изменениями.
Как я могу перестать повторять себя?
Я не знаю, это выглядит довольно DRY для меня. Если будет какая-нибудь сухая, это будет засуха :-) – e4c5
Я думал о возможностях этого трех видов, но только меняя модель или что-то в этом роде, я мог бы попытаться поместить все это в urls.py, как и представление generic_list, но это кажется как СУХОЙ, как я мог это сделать ... –