코딩공부/Python Django

KKU likelion django project (마무리)

integerJI 2020. 1. 2. 12:14

이번 시간에는 깔끔하지 못한 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파일이 없을 경우에는 빈 값으로 저장하게 만들 수 있습니다.

 

확인해보면

 

짠 정상적으로 글이 등록된 걸 확인할 수 있습니다!