为了账号安全,请及时绑定邮箱和手机立即绑定

如何从 Django generic.ListView 中的用户前端获取参数?

如何从 Django generic.ListView 中的用户前端获取参数?

千巷猫影 2022-05-24 15:10:58
我正在构建一个应用程序,用户可以在其中搜索附近的位置。为此,我在我的views.py:latitude = 23.734413longitude = 90.4082535user_location = Point(longitude, latitude, srid=4326)class NearbyServices(generic.ListView):    model = Service    context_object_name = 'services'    queryset = Service.objects.annotate(distance=Distance('location', user_location)).order_by('distance')[0:6]    template_name = 'services/nearby.html'我目前正在使用硬编码的用户位置,但我想让用户通过首先使用 HTML5 GeoLocation API 获取他们的位置来找到附近的位置。任何有关如何将其位置从前端获取到 listview 功能的帮助都会非常有帮助!
查看完整描述

1 回答

?
弑天下

TA贡献1818条经验 获得超8个赞

与任何基于 Django 类的视图一样,如果您需要根据请求数据自定义任何内容,则需要在方法中进行。在这种情况下,您应该删除该queryset属性并定义get_queryset:


class NearbyServices(generic.ListView):

    model = Service

    context_object_name = 'services'

    template_name = 'services/nearby.html'


    def get_queryset(self):

        user_location = self.request.however_you_get_the_location

        queryset = Service.objects.annotate(distance=Distance('location', user_location)).order_by('distance')[0:6]

        return queryset


查看完整回答
反对 回复 2022-05-24
  • 1 回答
  • 0 关注
  • 126 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号