이 syntax error들을 어떻게 해결할 수 있을지 알려주시면 감사하겠습니다.
조회수 3678회
안녕하세요, 파이썬 처음 배우는 학생입니다. 매우 쉬운 질문일지 모르나 제가 검색능력과 이해력이 현저히 부족하여 여기에 질문올립니다.
제가 작성한 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))
전 geodjango를 이용해서 request.session[]으로 request.POST[]된 user의 lat, lon 값을 user_lat, user_lon으로 받아 coordiantes를 형성해서 거기에 맞춰서 리스트를 구하려고 합니다.
그런데 터미널에서 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(created_date__gt = elasped_minutes).filter(point_distance__lte = userpoint, D(km='i'))
^
SyntaxError: positional argument follows keyword argument
이렇게 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
에서
list_total = list_total + ',' + 'list_i'
^
SyntaxError: invalid syntax
가 발생합니다.
앞에 두 가지도 정말 어떻게 해결해야할지 초보가 혼자 하는 중이라 막막하여 해결책을 주시기를 바라고 있습니다.
그런데 특히 마지막
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
에서 while 문의 결과로 나온 Post 모델의 list를
result_list 라는 것에 from itertools import chain
을 이용해서
chain 을 해서 한번에 쭉 뽑아내려고 하는데 제가 시도한 코드가 앞에서 다 에러가 나는 바람에 저게 가능한지, 되는지조차 알 수가 없습니다.
알려주시면 감사하겠습니다. 매번 초보같은 질문 올려 죄송합니다.
itertools 에 대한 python doc : https://docs.python.org/3.3/library/itertools.html
첫 번째와 두 번째 질문 예시 : https://docs.djangoproject.com/en/dev/ref/contrib/gis/db-api/#distance-lookups 여기의 example을 보고 따라했습니다.
현재 파이썬 3.5인가 최신버전을 apt-get을 통해 설치했고 , django 역시 pip3 를 이용해 최신버전을 설치했다고 알고 있습니다.
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
큰따옴표와 작은따옴표를 섞어서 쓴 부분이 잘못되어 보이네요.
lat = request.POST['user_lat'] lon = request.POST['user_lon'] userpoint = GEOSGeometry('POINT({}, {})'.format(lat,lon) , srid=4326)
와 같이 수정해 보시겠어요?
댓글 입력