게시글 쓰기 함수 수정
elif request.method == 'POST':
user = request.user
content = request.POST.get('my-content','')
if content == '':
all_tweet = TweetModel.objects.all().order_by('-created_at')
return render(request, 'tweet/home.html', {'error':'내용을 넣어주세요', 'tweet':all_tweet})
else:
my_tweet = TweetModel.objects.create(author=user, content=content)
# my_tweet = TweetModel()
# my_tweet.author = user
# my_tweet.content = request.POST.get('my-content','')
my_tweet.save()
return redirect('/tweet')
- 게시글 빈칸일때 딕셔너리로 변수에 값 담아서 return한다.
- my_tweet = TweetModel.objects.create(author=user, content=content)
- .create 사용하여 한줄로 작성 할 수 있다.
django - taggit 모듈 사용하기
1. 설치하기
pip install django-taggit
pip install django-taggit-templatetags2
또는 파이참 setting -> python interpreter 에서 django-taggit 과 django-taggit-templatetags2 검색하여 설치 가능하다.
2. mySpartaSns 의 settings.py 파일의 INSTALLED_APPS 에 추가
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'tweet',
'user',
'restaurant',
'taggit.apps.TaggitAppConfig',
'taggit_templatetags2',
]
TAGGIT_CASE_INSENSITIVE = True
TAGGIT_LIMIT = 50
TAGGIT_CASE_INSENSITIVE 과 TAGGIT_LIMIT 는 태그 모듈에 필요한 정보
3. tweet앱의 models.py 에 임포트 및 모델 수정
# tweet/models.py
from taggit.managers import TaggableManager
class TweetModel(models.Model):
class Meta:
db_table = "tweet"
author = models.ForeignKey(UserModel, on_delete=models.CASCADE)
content = models.CharField(max_length=256)
tags = TaggableManager(blank=True)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
4. migration 실행
python manage.py makemigrations
python manage.py migrate
5. django 공식문서 코드 사용
- tweet/view.py
from django.views.generic import ListView, TemplateView
# django taggit 사용에 필요한 코드
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
6. tweet.py 의 게시글쓰기에 태그 추가 및 html 수정
elif request.method == 'POST':
user = request.user
content = request.POST.get('my-content','')
tags = request.POST.get('tag','').split(',')
if content == '':
all_tweet = TweetModel.objects.all().order_by('-created_at')
return render(request, 'tweet/home.html', {'error':'내용을 넣어주세요', 'tweet':all_tweet})
else:
my_tweet = TweetModel.objects.create(author=user, content=content)
# my_tweet = TweetModel()
# my_tweet.author = user
# my_tweet.content = request.POST.get('my-content','')
for tag in tags:
tag = tag.strip() # 공백없애준다
if tag != '':
my_tweet.tags.add(tag)
my_tweet.save()
return redirect('/tweet')
'AI 웹 개발 과정 > 파이썬 장고 실무 기초' 카테고리의 다른 글
08. 4주차 실습 및 숙제 - (0) | 2022.05.31 |
---|---|
07. 4주차 이론 - (0) | 2022.05.31 |
06. 3주차 실습 및 숙제 - 게시글 쓰기, 읽기, 삭제 / 댓글 추가 (0) | 2022.05.30 |
05. 3주차 이론 - (0) | 2022.05.30 |
04. 2주차 실습 및 숙제 - (1) | 2022.05.27 |