Ich verwende mit Python 3.4
. Ich habe ein Szenario, in dem ich möchte, dass die Benutzer nach der Anmeldung in eine andere Ansicht umgeleitet werden, wie im Parameter next
GET definiert. Aber mit meinem derzeitigen Setup werden sie immer auf die Homepage weitergeleitet. Ich hatte gehofft, es gibt einen Weg, dies in der get_success_url
der FormView
Klasse zu tun.Umleiten auf die nächste URL in Django FormView
Unten ist mein Code
Der nächste Parameter in der URL
http://localhost:8000/login/?next=/ads/new
views.py
from django.views.generic.edit import FormView
class LoginView(FormView):
template_name = 'users/login.html'
form_class = LoginForm
def get_success_url(self):
return reverse('home')
def form_valid(self, form):
form.user.backend = 'django.contrib.auth.backends.ModelBackend'
login(self.request, form.user)
messages.info(self.request, 'Login successful')
return super(LoginView, self).form_valid(form)
urls.py
url(r'^login/', LoginView.as_view(), name='login'),
url(r'^new$', 'apps.adverts.views.add_new_advert', name='new_advert'), # URL to use after login, in next param
Wie kann ich mit der oben genannten Einrichtung zur nächsten URL umleiten, wenn sie definiert ist, abgesehen von der Homepage?
möglich Duplikat von [Django Erfolg URL mit Kwargs] (http://stackoverflow.com/questions/26897050/django-success-url-using-kwargs) – rnevius
Ich habe den oben genannten Link und während es angesehen befasst sich mit der Weiterleitung zu einem anderen Objekt/View, es zeigt nicht, wie die 'GET' Parameter in der' get_success_url' Methode abgerufen werden, um die 'next' URL zu übergeben. – Frankline