python - 如何在 django rest 框架中打印计算结果
问题描述
所以在我的项目中,我正在计算 1 个用户和用户列表之间的距离,但由于某种原因,它没有打印,也没有显示下面的计算结果是我的 api 视图
class Listsellers(generics.ListAPIView):
authentication_classes = [SessionAuthentication, BasicAuthentication]
queryset = Seller_account.objects.all()
serializer_class = SellerAccountSerializer
filter_backends = [DjangoFilterBackend]
def calc_distance(self, lat_a, long_a, lat_b, long_b):
EARTH_RADIUS_IN_MILES = 3958.761
"""all angles in degrees, result in miles"""
lat_ab = radians(lat_a)
lat_b = radians(lat_b)
delta_long = radians(long_a - long_b)
cos_x = (
sin(lat_ab) * sin(lat_b) +
cos(lat_ab) * cos(lat_b) * cos(delta_long)
)
return acos(cos_x) * EARTH_RADIUS_IN_MILES
def calc_dist(self):
user_long = self.request.Users.objects.username.longitude
user_lat = self.request.Users.objects.username.latitude
seller_lat = Seller_account.objects.latitude
seller_long = Seller_account.objects.latitude
lat_a = user_lat
print(lat_a)
long_a = user_long
print(long_a)
lat_b = seller_lat
print(lat_b)
long_b = seller_long
print(long_b)
distance = Users.objects.calc_distance(self, lat_a, long_a, lat_b, long_b)
print(distance)
有什么我想念的吗?
解决方案
您可以将 get_queryset() 添加到您的 api 视图中。
class Listsellers(generics.ListAPIView):
authentication_classes = [SessionAuthentication, BasicAuthentication]
# queryset = Seller_account.objects.all()
serializer_class = SellerAccountSerializer
filter_backends = [DjangoFilterBackend]
def calc_distance(self, lat_a, long_a, lat_b, long_b):
EARTH_RADIUS_IN_MILES = 3958.761
"""all angles in degrees, result in miles"""
lat_ab = radians(lat_a)
lat_b = radians(lat_b)
delta_long = radians(long_a - long_b)
cos_x = (
sin(lat_ab) * sin(lat_b) +
cos(lat_ab) * cos(lat_b) * cos(delta_long)
)
return acos(cos_x) * EARTH_RADIUS_IN_MILES
def calc_dist(self):
user_long = self.request.Users.objects.username.longitude
user_lat = self.request.Users.objects.username.latitude
seller_lat = Seller_account.objects.latitude
seller_long = Seller_account.objects.latitude
lat_a = user_lat
print(lat_a)
long_a = user_long
print(long_a)
lat_b = seller_lat
print(lat_b)
long_b = seller_long
print(long_b)
distance = Users.objects.calc_distance(self, lat_a, long_a, lat_b, long_b)
print(distance)
def get_queryset(self):
queryset = Seller_account.objects.all()
self.calc_dist()
return queryset
推荐阅读
- python - 在 Visual Studio Code 中导入模块时出现问题
- https - 无法使用 WifiClientSecure 将 https 协议与 ESP8266 连接
- wordpress - 具有特定标签的 Woocommerce 产品应位于列表的首位
- python - 查找具有相同数字的下一个最小数字Python
- php - 如何在子文件夹中包含文件
- linux - 如何在 shell 脚本中将 function_1 的输出转换为 function_2?
- python - 我的搜索查询不起作用并显示以下错误,:TypeError: not all arguments convert during string formatting
- javascript - 如何清除按钮单击
- wordpress - 根据在 WooCommerce 中选择的产品类别查询以获取属性?
- python - 如何找到大于平均值/中位数的平均工资