이 syntax error들을 어떻게 해결할 수 있을지 알려주시면 감사하겠습니다.

조회수 3676회

안녕하세요, 파이썬 처음 배우는 학생입니다. 매우 쉬운 질문일지 모르나 제가 검색능력과 이해력이 현저히 부족하여 여기에 질문올립니다.

제가 작성한 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 답변

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)