Ich habe 3 Ansichten für sehr ähnliche Ansichten und Vorlagen.Den Zusammenhang zwischen Ansichten in Django teilen?
Mein Code wird sich wiederholend und es scheint nicht zu folgen Django DRY Ansatz.
Views.py
@login_required
def registrations_check1_detail(request, registration_pk):
registration = get_object_or_404(Registration, pk=registration_pk)
costumer_profile_form = forms.CostumerProfileForm()
# THIS CONTEXT IS REPEATED ACROSS MANY OF MY VIEWS
request_context = {
'registration': registration,
'status': Registration.STATUS_CHOICES,
'costumer_profile_form': costumer_profile_form,
'duration_form': pf.DurationForm(),
'REG_DURATION_CHOICES' : Duration.REG_DURATION_CHOICES,
'EXT_DURATION_CHOICES' : Duration.EXT_DURATION_CHOICES,
'is_editable': editable_fields_perm(request.user, registration)
}
return render(request, 'profiles/registrations_check1_detail.html', request_context)
@login_required
def finance_review_detail(request, registration_pk):
costumer_profile_form = forms.CostumerProfileForm()
registration = get_object_or_404(Registration, pk=registration_pk)
request_context = {
'registration': registration,
'costumer_profile_form': costumer_profile_form,
'duration_form': pf.DurationForm(),
'REG_DURATION_CHOICES' : Duration.REG_DURATION_CHOICES,
'EXT_DURATION_CHOICES' : Duration.EXT_DURATION_CHOICES,
'is_editable': editable_fields_perm(request.user, registration)
}
return render(request, 'profiles/finance_review_detail.html', request_context)
Welches ist die richtige Art und Weise zu handhaben ist?
bearbeiten
Nach Shang Wang Rat dies ist, wie es jetzt aussieht:
@login_required
def registration_detail(request, registration_pk):
request_context = _registration_context(registration_pk, request.user)
return render(request, 'profiles/registration_detail.html', request_context)
Es gibt klassenbasierte Ansichten, kann eine allgemeine Ansicht haben und dann Unterklasse oder verwenden Sie Mixins https://docs.djangoproject.com/de/1.9/topics/class-based-views/intro/ – serg