프로그래밍/Django & Flask

[Django] 🤔 a 태그를 이용한 검색기능 구현중.....

대인보우 2020. 11. 30. 19:04
반응형

글을 올리면 태그 표시가 되고, 태그를 클릭하면 그 태그를 가진 게시글을 출력하는 기능을 만들기 위해

wayhome25.github.io/django/2017/06/22/custom-template-filter/

 

Django 사용자 정의 필터 (Custom Template Filter)를 활용하여 인스타그램 해시태그 링크 구현하기 · 초

Django 사용자 정의 필터 (Custom Template Filter)를 활용하여 인스타그램 해시태그 링크 구현하기 22 Jun 2017 | python Django 사용자정의필터 개인적인 연습 내용을 정리한 글입니다. 더 좋은 방법이 있거나,

wayhome25.github.io

다음 글을 참고했다 (감사합니다 ㅎ)

 

다만, 이제 해당 태그 클릭시 넘어가는 걸 만들어야 되는데

내가 애초에 구현한 검색 기능은 POST를 이용해 값을 받은 뒤, 그 값을 기반으로 return 해주는 것이었다.

#검색
def search(request):
    if request.method == 'POST':
        keyword = request.POST.get('search_button')
        tag = Tag.objects.filter(tag_content=keyword)
        post= Post.objects.filter(tagging__in = tag).order_by('-posting_date')

        if post:
            post_ = post[0]
        else:
            post_ = None

        return render(request, 'post/search_result.html', {'post':post, 'keyword':keyword, 'post_':post_})
    elif request.method == 'GET':
        return redirect('/')

그럴려면 input, form 태그가 필요하고 a 태그로는 불가능... 

그래서 a 태그 안에 있는 값을 어떻게 받아올 수 있을까 고민하다 javascript가 생각났다!

 

  function getA(a) {
    var getA = $(a).text();
    $.ajax({
      type: "POST",
      url: "{% url 'search' %}",
      data: {
        'tag' : getA,
        'csrfmiddlewaretoken': '{{ csrf_token }}'
      },
      dataType: "json",
    })
  }
'<a onclick="getA(this)" href="#">'+tag.tag_content+'</a>', content)

로 바꾸고 또 헤맸는데..... 원인을 알아냄

바로 태그를 저장할 때 '#'도 같이 저장했기 때문이었다..

이 # 때문에 url에서 연결이 안됐던 것이었다 ㅜㅜ.... # 떼니까 아주 잘됨!!!!!

 

url에서 #은 '웹페이지 안에서 어떠한 지점을 나타낼 때 사용'하는 지표로서 

어떠한 의미를 가지고 있기 때문에 온전하게 전송이 안된 것이다

어쨌든 삽질 완. 

반응형