#python #django #django-views #django-urls
#питон #джанго #django-просмотры #django-url-адреса
Вопрос:
Мне было интересно, есть ли способ получить kwargs непосредственно в представлении на основе классов. Я знаю, что это можно сделать в функциях внутри класса, но у меня возникают проблемы, когда я пытаюсь это сделать:
views.py
class EmployeesUpdateStudies(UpdateView):
form_class = form_ES
model = EmployeePersonal
template_name = 'employeesControll/employees_studies_update_form.html'
success_url = reverse('employee-details', kwargs={'pk': kwargs.get('pk')})
Мой URL-адрес выглядит следующим образом
url(r'^employees/detalles/(?P<pk>[0-9] )/
Ответ №1:
Ответ Аласдэра решает вашу проблему. Однако вы можете определить get_absolute_url
метод для вашей EmployeePersonal
модели, который будет действовать как success_url
для вашего представления:
Вам даже не нужно указывать
success_url
дляCreateView
илиUpdateView
- они будут использоватьсяget_absolute_url()
для объекта модели, если таковые имеются.
Вы будете использовать self.id
в get_absolute_url
методе для объектов модели первичный ключ.
Ссылка:
Комментарии:
1. Ваш ответ может помочь мне в некоторых других вещах в моем приложении, спасибо!
Ответ №2:
Вы не можете использовать kwargs
in success_url
, потому что, когда Django загружает класс при запуске сервера, у него нет доступа к запросу. Вместо этого переопределите этот get_success_url
метод.
def get_success_url(self)
return reverse('employee-details', kwargs={'pk': self.kwargs['pk']})
Комментарии:
1. Отлично, ты меня спас. Спасибо!
, login_required(views.EmployeeDetails.as_view()), name='employee-details')
Ответ №1:
Ответ Аласдэра решает вашу проблему. Однако вы можете определить get_absolute_url
метод для вашей EmployeePersonal
модели, который будет действовать как success_url
для вашего представления:
Вам даже не нужно указывать
success_url
дляCreateView
илиUpdateView
— они будут использоватьсяget_absolute_url()
для объекта модели, если таковые имеются.
Вы будете использовать self.id
в get_absolute_url
методе для объектов модели первичный ключ.
Ссылка:
Комментарии:
1. Ваш ответ может помочь мне в некоторых других вещах в моем приложении, спасибо!
Ответ №2:
Вы не можете использовать kwargs
in success_url
, потому что, когда Django загружает класс при запуске сервера, у него нет доступа к запросу. Вместо этого переопределите этот get_success_url
метод.
Комментарии:
1. Отлично, ты меня спас. Спасибо!