在Python Django中,我向一个称为view1的视图发送了一个POST请求,并希望在另一个名为view2的视图中看到相同的POST请求。
我试图将view1的方法导入到view2中,但是在执行对view2的GET请求而不是从view1中的POST请求并在view2中看到它时,我只是获得了view1的方法。
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后查看从view1到view2的发布请求。
实际:我仅在view2中看到一个GET请求,并将view1显示为导入的值。
答案 0 :(得分:0)
我能够找到解决方法。在第一个视图的初始发帖请求中,我没有查找其他发帖请求,而是向数据库中添加了值。
在第二个视图中,我执行了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)
如果有更好的解决方案,我当然愿意听。谢谢。