2016-10-11 3 views
0

Wie kann ich übergebene Werte in die klassenbasierte Ansicht protokollieren/drucken?Django-Klassenbasierte Ansichten Zugriff übergebene Argumente

Hier ist meine Klasse

class ProjectCreateView(CreateView): 
    model = Project 
    form_class = ProjectForm 

Ich habe versucht, die folgenden auf die Klasse angehängt, aber ich bin nicht alles in der Konsole gedruckt zu sehen.

def get(self, request, *args, **kwargs): 
    logging.info(request['name']) 

ich kann nicht herausfinden, was ich

Antwort

2

Mit self.args und self.kwargs Arbeiten in jeder generischen Klasse-basierte-Ansicht falsch hier zu tun.

class ProjectCreateView(CreateView): 
    model = Project 
    form_class = ProjectForm 

    def get(self, request, *args, **kwargs): 
     project_name = self.kwargs.get('project_name', None) 
     # Do something 
     return super(ProjectUpdateView, self).get(request, *args, **kwargs) 

Mit Blick auf Classy Class Based Views, eine tolle Seite für die Methoden betrachten und Attribute Standard CBVS, zeigt uns, warum dies so ist. Werfen Sie einen Blick auf diese aus dem TemplateView source code:

@classonlymethod 
def as_view(cls, **initkwargs): 
    """ 
    Main entry point for a request-response process. 
    """ 
    # sanitize keyword arguments 
    for key in initkwargs: 
     if key in cls.http_method_names: 
      raise TypeError("You tried to pass in the %s method name as a " 
          "keyword argument to %s(). Don't do that." 
          % (key, cls.__name__)) 
     if not hasattr(cls, key): 
      raise TypeError("%s() received an invalid keyword %r. as_view " 
          "only accepts arguments that are already " 
          "attributes of the class." % (cls.__name__, key)) 
    def view(request, *args, **kwargs): 
     self = cls(**initkwargs) 
     if hasattr(self, 'get') and not hasattr(self, 'head'): 
      self.head = self.get 
     self.request = request 
     self.args = args 
     self.kwargs = kwargs 
     return self.dispatch(request, *args, **kwargs) 

Die entpackten args und kwargs an die view Methode übergeben werden gespeichert als Klassenattribute und jederpost Initialisierungsmethoden.

Verwandte Themen