Что делать, если я не хочу жестко кодировать значения в своем post-запросе?

#python #django

#python #django

Вопрос:

На данный момент я просто жестко кодирую значения в полезную нагрузку и заголовки при выполнении post-запроса, и все работает нормально. Но теперь я не хочу жестко кодировать эти значения в полезную нагрузку и выполнять post-запрос .. он должен принимать значения при динамическом выполнении post-запроса.

У кого-нибудь есть идеи?

 @csrf_exempt
@api_view(['POST'])
def addtocart(request):
    payload = dict(customer_key='c_5c88d447dde56', hub_id=4, product_id='pr_572359462392e', quantity=1)
    headers = {"content-type":"application/json", "token": "tk_ju9fdm8e", "source":"android"}
    response = requests.post('http://api/cart/update/v2', data=json.dumps(payload), headers=headers)
    return HttpResponse(response)
 

Комментарии:

1. Принимайте параметры в качестве входных данных либо из формы, либо из файла конфигурации.

2. Не могли бы вы показать мне, как это сделать?

3. Итак, где вы хотите их сохранить вместо этого? Есть несколько вариантов, таких как файлы конфигурации, база данных и другие… Решите это, а затем получите их оттуда.

Ответ №1:

 @csrf_exempt
@api_view(['POST'])
def addtocart(request):
    # Query dictionary
    payload = request.data # <QueryDict: {'customer_key': [''], ...}>
    headers = {"content-type":"application/json", "token": "tk_ju9fdm8e", "source":"android"}
    response = requests.post('http://api/cart/update/v2', data=json.dumps(payload), headers=headers)
    return HttpResponse(response)
 

Комментарии:

1. поскольку вы не можете напрямую загружать querydict, поэтому перед его загрузкой необходимо сначала выполнить сброс.

2. Это чушь.

3. Что пробовал? Нет никаких обстоятельств, при которых это имеет смысл делать. Если content-type равен json , то request.data это уже будет JSON, и в этом случае вам вообще ничего не нужно делать . Если это не JSON, то json.dumps() это не сработает в первую очередь.

4. получил эту ошибку, если сначала не сбрасывает ее. *** TypeError: the JSON object must be str, bytes or bytearray, not QueryDict . request.data в django будут возвращены QueryDict объекты. И он устанавливает content-type как JSON .

5. Итак, в запросе. в данных есть u жестко закодированных данных… или как вы передаете эти данные динамически?