嗨我是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
感谢您阅读我的问题。
答案 0 :(得分:2)
您无法使用错误形成的字符串实例化GEOSGeometry对象。使用
userpoint = GEOSGeometry(' POINT(' + latvariable +'' + lonvariable +')',srid = 4326)
答案 1 :(得分:1)
您已经错过了收银台:
list_i = Post.objects.filter(point_distance__lte = userpoint, D(km=i)