У меня есть много аналогичных функций в моем Django views.py, которые начинаются от так:Как я могу избежать повторения этого общего кода в представлениях Django?
@login_required
def processMyObject(request, myObjectID, myObjectSlug=None):
logger.info("In processMyObject(myObjectID=%s, myObjectSlug=%s)" % (myObjectID, myObjectSlug))
try:
myObject = MyObject.objects.get(id=myObjectID)
except:
logger.error("Failed to get MyObject Object by ID")
raise "Failed to get MyObject Object by ID"
if myObjectSlug != None and myObject.slug != myObjectSlug:
logger.error("myObjectSlug '%s' doesn't match myObject #%s's slug" % (myObjectSlug, myObject.id))
raise "myObjectSlug '%s' doesn't match myObject #%s's slug" % (myObjectSlug, myObject.id)
Каждая из этих функций имеет тот же аргумент подпись и содержит один и тот же кусок кода в верхней части, а затем идет на чтобы реализовать некоторые уникальные функции. Однако это общий код в каждом из них. Похоже, это ужасное нарушение DRY, поскольку я набирал один и тот же код столько раз.
Как я могу использовать наследование или какую-либо другую технику, чтобы изящно разлагать этот код, чтобы он отображался только один раз, но используется в каждой из этих функций просмотра?