이번 시간에는 깔끔하지 못한 django project를 조금씩 수정하며 끝내겠습니다.
1. 템플릿 필터
시간을 표시하는 법을 models.py에 정의를 할 때 아무것도 주지 않아 평범하게 나옵니다.
이 부분을 템플릿 필터를 사용하여 바꿔보겠습니다.
settings.py에 해당 내용을 넣습니다.
'django.contrib.humanize',
그다음에는 pub_date가 있는 home.html로 가서
{% load humanize %}
해당 내용을 맨 상단에 넣어 load 해준 뒤
<p>시간 : {{ post.pub_date | naturaltime }}</p>
pub_date 뒤에 새로운 템플릿 필터인 naturaltime를 넣어줍시다.
그러면
짜잔 좀더 멋있게 바뀌었습니다.
물론 models.py에 class를 정의할 때 알맞은 양식으로 저장해도 되지만
이렇게 다양한 필터를 이용하여 표현할 수 있습니다.
2. 한국시간으로 변경
project를 진행하다 보면 모두 영어로 되어있거나 글을 쓴 시간이 맞지 않은 경우가 있습니다.
이러한 이유는 미국 시간과 언어를 기준으로 되어있기 때문에 그렇습니다. 그 부분을 바꿔보겠습니다.
settings.py로 가서 120~~ 번 정도 되는 줄에 있을 것입니다. LANGUAGE_CODE와 TIME_ZONE를 조금만 수정해주면 됩니다.
LANGUAGE_CODE = 'ko-kr'
TIME_ZONE = 'Asia/Seoul'
USE_I18N = True
USE_L10N = True
USE_TZ = False
해당 부분을 이렇게 바꿔주면?
짠 이제 admin사이트와 같이 django에서 지원하는 서비스가 모두 한글로 바뀌게 되었습니다.
또한 USE_TZ을 False로 하여 저희가 TIME_ZONE에 설정한 시간으로 출력이 됩니다.
3. 이미지 파일 검사
현재 project는 이미지를 올리지 않으면 오류가 납니다. 이 부분을 수정하겠습니다.
views.py의 create 함수를 수정해주어야 합니다.
이렇게 되어있는 함수를
def create(request):
post = Post()
post.title = request.POST['title']
post.body = request.POST['body']
post.pub_date = timezone.datetime.now()
post.name = User.objects.get(username = request.user.get_username())
if not request.FILES:
post.images = ""
post.save()
else:
post.images = request.FILES['images']
post.save()
return redirect('/post/' + str(post.id))
이렇게 if문을 추가하여 img파일이 없을 경우에는 빈 값으로 저장하게 만들 수 있습니다.
확인해보면
짠 정상적으로 글이 등록된 걸 확인할 수 있습니다!
'코딩공부 > Python Django' 카테고리의 다른 글
[django 기초] project 생성, app 생성, hello world 띄우기, MTV 패턴 (5) | 2020.02.13 |
---|---|
[django 기초] vscode 설정, git bash, django 설치, venv 생성 (2) | 2020.02.13 |
python django heroku + aws s3 이용하기 (마무리) (0) | 2020.01.02 |
python django heroku + aws s3 이용하기 (버킷 생성 및 key 발급) (0) | 2020.01.02 |
python django heroku 배포하기 (3) | 2020.01.02 |