Python Django POST-запрос к различным представлениям - PullRequest
0 голосов
/ 01 мая 2019

В Python Django я отправил POST-запрос в одно представление, называемое view1, и хочу увидеть тот же POST-запрос в другом представлении, называемое view2.

Я попытался импортировать метод этого view1 в view2, но я только что получил метод этого view1, когда выполнял GET-запрос к view2, а не POST-запрос от view1 и видел его в view2.

view1.py

@csrf_exempt
def index(request):
  if "POST" == request.method:
    list_data = json.loads(request.body.decode('utf-8'))

  elif "GET" == request.method:
    list_data = serialize('json', ApiStatus.objects.all())

  return HttpResponse(list_data, content_type='application/json')

view2.py

from app.views.view1 import index

def status(request):  
    print("STATUS request method ", request) # gives a GET request when reloading page
    print("INDEX method from view1.py ", index) # shows when doing GET request
    return render(request, 'template.html')

post_file.py

def get_test_req():
    return { 'Samurai': 'Masamune'}

def post_data():
        data = []
        data.append(get_test_req())
        headers = {'Content-Type': 'application/json', 'Accept':'application/json'}
        r = requests.post(view1_url, headers=headers, json=data, timeout=10.0)

Ожидается: просмотр запроса на публикацию из view1 в view2 после публикации в view1.

Факт: я вижу только запрос GET в view2 и показываю view1 как импортированное значение.

1 Ответ

0 голосов
/ 10 мая 2019

Я смог найти способ обойти.Вместо того, чтобы искать другие запросы на публикацию, в своем первоначальном запросе на публикацию в первом представлении я добавил значения в базу данных.

Во втором представлении я сделал запрос GET и затем проверил, обновлялись ли значения вБаза данных в последнюю минуту.Если бы в наборе запросов были значения, я бы инициализировал узел ROS следующим кодом:

view2.py

def status(request):
    right_now = datetime.now()
    last_time = right_now - timedelta(seconds=20)
    last_min_data = ApiStatus.objects.values().filter(date_time__gte=last_time)

    if last_min_data.exists():
        logging.debug("\n \n last_min_data EXISTS \n \n")

        rospy.init_node('root')
        s = rospy.Service('ros_post', OneInt, handle_request)

Если есть лучшее решение, я, безусловно, открытуслышать это.Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...