我怎样才能在python django中解决这个错误?

时间:2016-07-18 07:04:09

标签: python django

嗨我是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))

首先,我希望make list使用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'))
                                                                                                                ^

SyntaxError:位置参数跟随关键字参数

这个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

- >这个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 doc: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

感谢您阅读我的问题。

2 个答案:

答案 0 :(得分:2)

您无法使用错误形成的字符串实例化GEOSGeometry对象。使用

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

答案 1 :(得分:1)

您已经错过了收银台:

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