我一直在試驗Django的基於類的視圖,並試圖編寫一個簡單的基於類的視圖來處理request
中的某些信息,以便「處理器」方法可以使用處理過的信息。使用基於類的視圖來處理信息?
我似乎並沒有完全理解文檔所說的內容,我不確定這應該是Mixin,通用視圖還是其他內容。我想製作一個像這樣的類:
class MyNewGenericView(View):
redirect_on_error = 'home'
error_message = 'There was an error doing XYZ'
def dispatch(self, request, *args, **kwargs):
try:
self.process_information(request)
# self.process_information2(request)
# self.process_information3(request)
# etc...
except ValueError:
messages.error(request, self.error_message)
return redirect(self.redirect_on_error)
return super(MyNewGenericView, self).dispatch(request, *args, **kwargs)
def process_information(self, request):
# Use get/post information and process it using
# different models, APIs, etc.
self.useful_information1 = 'abc'
self.useful_information2 = 'xyz'
def get_extra_info(self):
# Get some extra information on something
return {'foo':'bar'}
這將允許有人寫這樣一個觀點:
class MyViewDoesRealWork(MyNewGenericView):
def get(self, request, some_info):
return render(request, 'some_template.html',
{'info':self.useful_information1})
def post(self, request, some_info):
# Store some information, maybe using get_extra_info
return render(request, 'some_template.html',
{'info':self.useful_information1})
是上面的代碼,以正確的方式去?有沒有更簡單/更好的方法來做到這一點?這是否會阻止上述功能在另一個通用視圖中使用(例如,內置的通用視圖)?
如果您認爲有更好的方法,請發表一個答案。 – Umang