【问题标题】:How can i solve this errors in python django?如何在 python django 中解决这个错误?
【发布时间】:2016-11-20 16:34:42
【问题描述】:

嗨,我是 python django 的新手。

这是我的 django views.py 代码

def post_list(request):
request.session['lat'] = request.POST['user_lat']
request.session['lon'] = request.POST['user_lon']
userpoint = GEOSGeometry('POINT('lat' 'lon')', srid=4326)
list_total = list_1
i=1
while i:
    list_i = Post.objects.filter(point_distance__lte = userpoint, D(km=i)
    list_total = 'list_total' + ',' + 'list_i')
    result_list = list(chain(list_total))
    if len(result_list) >= 50 :
        break

template = loader.get_template('blog/index.html')
context = {
    'post_list': post_list,
}

return HttpResponse(template.render(context, request))

首先,我想让列表使用 request.session[]=request.POST[] 来制作坐标,这个坐标将在我的点域上使用'model.py'是否可能?还是有什么问题?

其次,在终端(ubuntu16.04)中,我使用了 python3 manage.py makemigrations 命令,它给了我如下消息, 从这样的代码,

request.session['lat'] = request.POST['user_lat']
request.session['lon'] = request.POST['user_lon']
userpoint = GEOSGeometry('POINT('lat' 'lon')', srid=4326)

发生了这样的错误->

userpoint = GEOSGeometry('POINT('lat' 'lon')', srid=4326)
                                  ^
                               SyntaxError: invalid syntax

从这样的代码,

list_i = Post.objects.filter(point_distance__lte = userpoint, D(km='i'))
                                                                                                                ^

语法错误:位置参数跟随关键字参数

发生了这个语法错误。

最后,从这段代码中,

while i:
    list_i = Post.objects.filter(point_distance__lte = userpoint, D(km=i))
    list_total = 'list_total' + ',' + 'list_i')
    result_list = list(chain(list_total))
    if len(result_list) >= 50 :
        break

-> 发生了这个 SyntaxError。

list_total = list_total + ',' + 'list_i'
         ^

SyntaxError: 无效语法

我该如何解决这个问题?

while i:
    list_i = Post.objects.filter(point_distance__lte = userpoint, D(km=i))
    list_total = 'list_total' + ',' + 'list_i')
    result_list = list(chain(list_total))
    if len(result_list) >= 50 :
        break

ps。我想使用 list(chain()) 函数制作自己的 result_list,但我想知道它是否有效。

itertools - python 文档:https://docs.python.org/3.3/library/itertools.html 我是根据 GEOdjango 代码: https://docs.djangoproject.com/en/dev/ref/contrib/gis/db-api/#distance-lookups

我正在使用 python3(可能是 3.5),django 1.9

感谢您阅读我的问题。

【问题讨论】:

    标签: python django


    【解决方案1】:

    你错过了行的结束后备:

    list_i = Post.objects.filter(point_distance__lte = userpoint, D(km=i)
    

    【讨论】:

    • 谢谢。但即使在我添加了 backet 之后,在 'D(km=i)' 处也出现了'SyntaxError: positional argument follow key argument'。我该如何解决?
    • @touchingtwist list_i = Post.objects.filter(D(km=i), point_distance__lte = userpoint)
    【解决方案2】:

    您不能使用格式错误的字符串实例化 GEOSGeometry 对象。使用

    userpoint = GEOSGeometry('POINT('+ latvariable + ' ' + lonvariable +')', srid=4326)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-16
      • 1970-01-01
      • 2021-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多