Tôi đang sử dụng Django 1.7
với Python 3.4
. Tôi có một kịch bản mà tôi muốn người dùng được chuyển hướng đến chế độ xem khác, như được xác định trong tham số GET next
sau khi họ đăng nhập. Nhưng với thiết lập hiện tại của tôi, chúng luôn được chuyển hướng đến trang chủ. Tôi đã hy vọng có một cách để làm điều này trong các get_success_url
của lớp FormView
.Chuyển hướng đến URL tiếp theo trong django FormView
Dưới đây là mã của tôi
Tham số tiếp theo trong 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
Với thiết lập ở trên, làm cách nào để chuyển hướng đến URL tiếp theo nếu nó được xác định, ngoài trang chủ?
có thể trùng lặp [url thành công Django sử dụng kwargs] (http://stackoverflow.com/questions/26897050/django-success-url-using-kwargs) – rnevius
Tôi đã xem liên kết được đề cập ở trên và trong khi đề cập đến việc chuyển hướng đến một đối tượng/khung nhìn khác, nó không hiển thị cách nhận các tham số 'GET' trong phương thức' get_success_url' để chuyển vào URL 'next'. – Frankline