@9550668

Как получить переменную из строки запроса GET?

Всем привет. Я запросом GET передаю строку типа:
127.0.0.1:8000/api/users/23/profile
В url'е прописан
path(
        "<int:user_id>/profile/",
        ProfileUpdate.as_view(),
        name="profile-api-update",
    ),

Как мне во view (функция def get_queryset(self)) получить user_id? (через self.request или как-то по-другому)
  • Вопрос задан
  • 101 просмотр
Пригласить эксперта
Ответы на вопрос 1
WStanley
@WStanley
Back-end Developer
Есть midlleware в django django.contrib.auth.middleware Он как раз ложит авторизованного юзера в request поэтому во всех views в request можно обратиться и получить авторизованного юзера вот так:
def get_queryset(self)
    user = self.request.user # тут юзер
    user_id = self.request.user.id # так ИД юзера

https://docs.djangoproject.com/en/3.1/ref/middlewa...
И передавать ИД авторизованного юзера через url нет смысла

Получить параметр с Урла можно так
https://docs.djangoproject.com/en/3.1/topics/http/...
path("<int:my_param>/profile/", ProfileUpdate.as_view(), name="profile-api-update" ),
# Только я бы последним параметр передавал, вот так
# path("/profile/<int:my_param>/", ProfileUpdate.as_view(), name="profile-api-update" ),

class ProfileUpdate(View):

    def get(self, request, my_param):
        print(my_param)
        return render(request, self.template_name)

    def post(self, request, my_param):
        print(my_param)
        return render(request, self.template_name)

    def get_queryset(self):
        my_param=self.kwargs['my_param']
        my_param=self.kwargs.get('my_param') # лучше так
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы