2017-05-25 3 views
0

Ich habe versucht, wieder in den Fluss der OO-Programmierung zu bekommen. Wenn ich eine UploadServerInventory-Klasse erstelle und eine Datei hochlade, werde ich zurück an den root weitergeleitet. Wenn ich jedoch UploadServerInventory erstelle und eine Datei hochlade, bekomme ich "UploadServerInventory hat kein HttpResponse-Objekt zurückgegeben. Es hat stattdessen None zurückgegeben."Django FormView nicht Umleitung auf Unterklasse

Sollte ich nicht alles von der Elternklasse übernehmen? Es sieht so aus, als würde ich alles an die Superklasse weitergeben? Welches grundlegende Problem fehlt mir?

class UploadExcelFile(FormView): 

    template_name = 'cmdb/upload.html' 
    form_class = UploadFileForm 
    success_url = '/' 

    def form_valid(self, form): 
     return super(UploadExcelFile, self).form_valid(form) 

    def set_excel_file(self): 
     self.excel_dict = self.request.FILES['file'].get_book_dict() 

    def form_invalid(self, form): 
     return super(UploadExcelFile, self).form_invalid(form) 


class UploadServerInventory(UploadExcelFile): 

    def form_valid(self, form): 
     self.set_excel_file() 
     super(UploadServerInventory, self).form_valid(form) 

    def form_invalid(self, form): 
     return super(UploadServerInventory, self).form_invalid(form) 

Antwort

1

Sie haben die Rückgabeanweisung in Ihrer Unterklasse form_valid Methode verpasst.

Hinweis, die Definitionen von form_valid und form_invalid in UploadExcelFile sind völlig sinnlos. Es hat keinen Sinn, eine Methode außer Kraft zu setzen, nur um die Superklassenversion aufzurufen.

+0

Es gibt keine Wand, die dick genug ist, um bei dieser einfachen Aufsicht meinen Kopf dagegen zu stoßen. Vielen Dank! –