웹 프로그래밍

[Django Tutorial] Blog 만들기 (5)

728x90
반응형

Tag

 

vue.js 작성전 3가지를 수정한다.

1. post table의 tags column 추가

2. post table의 owner column 추가

3. settings.py를 분리해서 개발용과 배포용으로 나눈다.

 

* 블로그에 태그 기능을 개발하는 경우에 직접 개발할수도 있고 이미 나와있는 장고 패키지를 사용할 수도 있다. (구글에 django tag 검색하거나 djangopackages.org 에서 tag정도로 검색해보면 많음. 깃허브와 도큐먼트를 보고 사용해보자.)

 

a. 설치

파이참 > File > Settings > Project > Python Interpreter > + > django-taggit 검색 > Install Package > OK

(django taggit을 설치한 것은 startapp에 해당한다.)

 

b. settings.py

docs에 나타난대로 진행해보자

django-taggit.readthedocs.io/en/latest/index.html

 

Welcome to django-taggit’s documentation! — django-taggit 1.3.0 documentation

© Copyright Alex Gaynor and individual contributors. Revision dbafa8df.

django-taggit.readthedocs.io

- Add "taggit" to your project's INSTALLED_APPS setting.

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    
    'taggit',
    
    'blog.apps.BlogConfig',
]

- 대소문자 구별없는 설정항목 (CASE-INSENSITIVE): set the TAGGIT_CASE_INSENSITIVE setting to True

 

c. models.py

Post class 에 tags= TaggableManager(blank=True)

 

d. admin.py

from django.contrib import admin
from blog.models import Post

@admin.register(Post)
class PostAdmin(admin.ModelAdmin):
    list_display=('id','title','modify_dt', 'tag_list')


    def get_queryset(self, request):
        return super().get_queryset(request).prefetch_related('tags')

    def tag_list(self, obj):
        return u", ".join(o.name for o in obj.tags.all())

* docs 참고

 

e. taggit 추가를 db에 반영

python manage.py makemigrations

python manage.py migrate

 

728x90
반응형