2017-02-11 5 views
1

In meinem Django App Referrer, habe ich ein paar Seiten zuRedirect-Seite nach modal Vorlage in Django

  1. Umfrage Frage erstellen /poll/create-question
  2. bearbeiten Umfrage Frage /poll/edit-question/<question_number>

jedem dieser pages verfügt über eine Option, um die Frage mit einem Kategorienamen aus einer Dropdown-Liste zu verknüpfen. Der Benutzer kann auch eine Kategorie im laufenden Betrieb erstellen, wenn die erforderliche Kategorie nicht in der Liste vorhanden ist.

Klicken auf eine Schaltfläche, die Kategorie zu erstellen, eine Bootstrap-modal erscheint und der Benutzer kann den Kategorienamen und eintragen. Diese POST-Anforderung wird von einer separaten view Funktion (mit URLPATTERN /poll/create-category) behandelt. Auch ist die Kategorie erstellen Option in den beiden Seiten (Create & Edit)

Dinge arbeiten gut. Abgesehen davon, dass ich nach dem Schließen des Modals auf die Originalseite (d. H. Erstellen oder Bearbeiten) umleiten wollte. Das Anforderungsobjekt verfügt über einen Eigenschaftsaufruf HTTP_REFERER, der die vollständige URL http://servername:port/poll/create-question enthält. Aber ich wollte nur das URL-Muster der Referrer-Seite /poll/create-question.

Gibt es eine Möglichkeit in Django, dass zu bekommen und auf die Originalseite umleiten auf eine modale einreichen? Wie wird diese Art von Feature normalerweise in Django gehandhabt?

+1

Sie könnten den aktuellen Kontext speichern ('‚create'' oder '‘ edit'') in der Sitzung oder als Query-String anhängen an die 'formaction' der Form, die in der POST vorgelegt. – schwobaseggl

Antwort

0

Ich würde sagen, die Referrer verwendet, ist nicht zuverlässig. Sie sollten klassenbasierte Ansichten verwenden. Machen Sie zwei Ansichten, die so aussehen. Sie können Ihre gesamte Logik in die erste Ansicht einfügen und einfach die Methode der erfolgreichen URL in der zweiten Ansicht überschreiben.

class CrateCategory (CreateView): 
    model = Category 

    def get_success_url (self): 
     return '/poll/create-question/' 

class CreateCategoryToUpdate(CreateCategory): 

    def get_success_url (self): 
      return '/poll/update-question/' 

Sie sollten die Urls mit der Rückseite() Methode verwendet URL-Namen ersetzen.