[ Django ] SNS 서비스에 태그 기능을 추가해보자! | django taggit 설치/사용법 (2)

2021. 9. 1. 18:00·Archive/Develop
728x90
반응형

이전 포스팅에 이어서,

데이터베이스에 저장된 내용을 화면에 적용시켜 보도록 하겠다!

 

 

지금 내 화면은 아래와 같다.

 

 

 

이제 글을 작성할 때 태그를 작성할 수 있도록 html 파일과 view 파일을 변경시켜보자.

 

 

 

우선 tweet앱의 views.py 로 들어가보자.

 

 

 

글을 쓸 때 태그 기능이 들어가야하기때문에, 글이 save 되는 부분만 가지고 왔다.

POST 메소드에서 글이 저장된다. 따라서 elif문은 크게 신경쓰지 않아도 된다.

 

여기에 tags 변수를 하나 더 추가해주자.

 

 

id 랑 name이 tag 인 input 태그는 나중에 html 수정하면서 추가할 것이다.

 

 

 

이제 실제로 save 할 단계에서 for문을 통해 tag 하나하나의 공백을 없애준다.

 

for 안에서 tag.strip() 은 공백을 없애주는 용도이다.

만약 tag 가 비어있지 않다면 my_tweet 내의 tags 값 안에 tag 가 추가된다.

 

 

 

그 다음, 지금 건드리고 있는 view 파일의 상단에

아래 클래스를 import 해준다.

 

from django.views.generic import ListView, TemplateView

 

그 다음 뷰의 아래 부분에 밑의 코드를 작성한다.

 

class TagCloudTV(TemplateView):
    template_name = 'taggit/tag_cloud_view.html'


class TaggedObjectLV(ListView):
    template_name = 'taggit/tag_with_post.html'
    model = TweetModel

    def get_queryset(self):
        return TweetModel.objects.filter(tags__name=self.kwargs.get('tag'))

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['tagname'] = self.kwargs['tag']
        return context

 

이 친구는 태그들을 모아놓는 태크 클라우드 기능과 태그를 모아 화면에 전달하는

기능을 맡아줄 것이다!

 

위 두 클래스들은 django-taggit 모듈의 공식 문서를 참조하여 작성한 것이니,

그걸 참고하면서 자기 프로젝트에 맞게 적용해나가면 된다.

 

 

 

태그 기능이 있는 html 을 따로 만들 예정이라, tweet/urls.py 에 위 두개의 경로를 추가해줬다.

 

 

 

그리고 이제 글을 작성하는 부분에 아래 html 코드를 집어넣어 tag를 입력할 수 있게 해주자.

 

<div class="mt-3 row">
<label for="tag"
class="col-sm-2 col-form-label">이 글의 태그</label>
<div class="col-sm-10">
<input type="text" class="form-control" name="tag" id="tag"
placeholder="콤마(,)로 구분 해 주세요">
</div>
</div>

 

글을 보여주는 부분에도 아래 코드를 추가해 태그가 있다면 해당 태그를 출력하게 해보자.

 

 

{% if tw.tags.all %}
{% for tag in tw.tags.all %}
<a style="text-decoration: none"
href="{% url 'tagged_object_list' tag.name %}">
<span class="badge rounded-pill bg-success">
{{ tag.name }}
</span>
</a>
{% endfor %}
-<a style="text-decoration: none"
href="{% url 'tag_cloud' %}">TagCloud</a>
{% endif %}

 

 

이제 아까 url.py 에서 경로 추가한 부분인

 

tag_cloud_view.html 파일과

tag_with_post.html 파일을 작성해줄 것이다.

 

templates 폴더 아래 taggit 디렉토리를 만들고 그 안에 파일을 생성해준다.

 

 

 

이 내부의 html 파일들은 django-taggit 공식 문서를 찾아보면 나온다.

따라서 구체적으로 기술하지는 않겠다.

 

 

 

완성된 화면은 아래와 같다!

 

 

 

 

이렇게 태그가 정상적으로 생성되는 것을 알 수 있다.

 

만약 태그가 아래와 같이 되어 있다면?

 

 

현재 블로그와 정말, 얏호 라는 태그가 몇개의 트윗에 걸쳐 반복되어 있다.

 

정말이라는 태그를 클릭해본다면?

 

 

 

 

어떤 트윗이 정말이라는 태그를 사용했는지 알 수 있다!

 

 

 

트윗 아래의 TagCloud 를 누르면

 

 

 

어떤 태그가 얼만큼 쓰였는지도 확인 가능하다.

 

 

이렇게 태그 기능을 넣고 이것저것 만져보았다!

저 TagCloud 기능을 조금 더 손대면 많이 사용된 태그를 순위별로 구성하여

트위터 현재 이슈 줄세우기처럼 만들어볼 수도 있을 것 같다. 활용 열심히 해보자!

728x90
반응형

'Archive > Develop' 카테고리의 다른 글

[ 빅데이터분석기사 ] 데이터에 대해서  (0) 2021.09.18
[ Windows Socket ] 소켓 프로그래밍/소켓 통신 예제 간단한 채팅 프로그램  (4) 2021.09.17
[ Django ] SNS 서비스에 태그 기능을 추가해보자! | django taggit 설치/사용법 (1)  (0) 2021.09.01
[ Spring ] @Component 를 상속하는 어노테이션  (0) 2021.08.27
[ Spring ] 스프링 의존성 관리  (0) 2021.08.27
'Archive/Develop' 카테고리의 다른 글
  • [ 빅데이터분석기사 ] 데이터에 대해서
  • [ Windows Socket ] 소켓 프로그래밍/소켓 통신 예제 간단한 채팅 프로그램
  • [ Django ] SNS 서비스에 태그 기능을 추가해보자! | django taggit 설치/사용법 (1)
  • [ Spring ] @Component 를 상속하는 어노테이션
코뮤(commu)
코뮤(commu)
코딩으로 커뮤니케이션하는 코뮤입니다 😎
  • 코뮤(commu)
    코뮤(COMMU)
    코뮤(commu)
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Archive
        • Hacking
        • Develop
        • ETC
      • Algorithm
      • DB&Infra
      • ETC
      • Node
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • IT지식보따리
    • IT가 맛있다
    • IT 천재
  • 공지사항

    • 배고픕니다
  • 인기 글

  • 태그

    코드업 기초
    코드업
    장고
    카카오 100일 프로젝트
    Codeup
    파이썬 문제
    Python
    백준 문제풀이
    보안뉴스
    docker
    파이썬 기초 문제
    자바스크립트 API
    백준 풀이
    백준
    자바스크립트
    Django
    자바스크립트 객체
    oracle db
    비박스
    C++
    파이썬
    백준 파이썬
    파이썬 기초
    파이썬 알고리즘
    Git
    파이썬 백준
    javascript
    Oracle
    오라클
    코드업 파이썬 기초 100제
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
코뮤(commu)
[ Django ] SNS 서비스에 태그 기능을 추가해보자! | django taggit 설치/사용법 (2)
상단으로

티스토리툴바