Параметр 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-адрес получает данные от клиентов Android с использованием rest api.
/* PHOTO FOR POSTS */
@POST("/post/photo/{category_code}/")
Call<PhotoURL> createPhotoURL(@Body PhotoURL photoURL, @Path("category_code") int categoryCode);
Я только что отредактировал сообщение и включил функцию set_thumbnail





category_code - это строка, поэтому она не будет равна ни одному из целых чисел в методе set_thumbnail. Либо преобразуйте его в int, либо используйте строки для сравнения.
теперь он работает, но я не понимаю, как параметр category_code достигает сервера в виде строки, несмотря на то, что он объявлен как целое число от клиента Android.
Как Django узнает, что делает ваш Android-клиент? Он просто получает URL - / post / category / 2 / - и использует регулярное выражение для анализа "2". Но это все еще веревка.
О, я вижу. Теперь он стал еще более надежным, поскольку я вручную привел его к int. Благодарю.
Что такое
set_thumbnail? Покажи код.