Мой параметр url не достигает моего представления в django

Параметр url не доходит до моего представления.

Мои URL-адреса определены следующим образом, где category_code является параметром:

# posting image for a post
url(r'^post/photo/(?P<category_code>[0-9]+)/$', views.post_photo, name='post_photo_url'),

и мое мнение, как показано ниже, где я ожидаю свой параметр url category_code:

@api_view(['POST'])
def post_photo(request, category_code):
    """
    Post all the PHOTO URL for that POST
    """
    if request.method == 'POST':
        data = JSONParser().parse(request)
        serializer = PhotoURLSerializer(data=data)
        if serializer.is_valid():
            photoUrl = serializer.save()
            set_thumbnail(photoUrl.post_id, category_code, photoUrl.url)
            return JsonResponse(serializer.data, status=201)
        return JsonResponse(serializer.errors, status=400)

Функция set_thumbnail выглядит следующим образом:

def set_thumbnail(post_id, category_code, thumbnail_url):
    if category_code == 0: # mobile category
        pass

    elif category_code == 1: # Electronic category
        pass
    elif category_code == 2: # Car category
        autoPost = AutoPost.objects.get(pk=post_id)
        autoPost.set_thumbnail_url(thumbnail_url)

    elif category_code == 3: # Furniture category
        pass

    elif category_code == 4: # Fashion category
        pass
    elif category_code == 5: # Real Estate category
        housePost = RealEstate.objects.get(pk=post_id)
        housePost.set_thumbnail_url(thumbnail_url)
        housePost.save()
        pass
    elif category_code == 6: # Jobs and services category
        pass
    elif category_code == 7: # Show Category
        pass

Но когда представление выполняется, функция set_thumbnail получает значение null из кода категории, хотя из журнала сервера я вижу, что параметр был передан, это первая строка, а значение параметра равно 2

Мой параметр url не достигает моего представления в django

URL-адрес получает данные от клиентов Android с использованием rest api.

/* PHOTO FOR POSTS */
    @POST("/post/photo/{category_code}/")
    Call<PhotoURL> createPhotoURL(@Body PhotoURL photoURL, @Path("category_code") int categoryCode);

Что такое set_thumbnail? Покажи код.

Daniel Roseman 19.03.2018 12:03

Я только что отредактировал сообщение и включил функцию set_thumbnail

Armando 'Sugar' Sudi 19.03.2018 12:10
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
39
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

category_code - это строка, поэтому она не будет равна ни одному из целых чисел в методе set_thumbnail. Либо преобразуйте его в int, либо используйте строки для сравнения.

теперь он работает, но я не понимаю, как параметр category_code достигает сервера в виде строки, несмотря на то, что он объявлен как целое число от клиента Android.

Armando 'Sugar' Sudi 19.03.2018 12:21

Как Django узнает, что делает ваш Android-клиент? Он просто получает URL - / post / category / 2 / - и использует регулярное выражение для анализа "2". Но это все еще веревка.

Daniel Roseman 19.03.2018 12:22

О, я вижу. Теперь он стал еще более надежным, поскольку я вручную привел его к int. Благодарю.

Armando 'Sugar' Sudi 19.03.2018 12:27

Другие вопросы по теме