코딩공부/Python Django

[django 실습] 게시판 만들기 - 한글 설정, 한국 시간 설정, 데이터 자르기, 정렬하기

integerJI 2020. 2. 19. 23:14

[django] python django 게시판 만들기 - setting 설정, 데이터 자르기, 정렬하기

 

게시물의 리스트 정렬과 setting 설정 setting 알아보기

 


model, admin 설정 : https://integer-ji.tistory.com/89

views에 데이터 가져오기 : https://integer-ji.tistory.com/90

detail page 만들기 : https://integer-ji.tistory.com/91


언제나 시작은 가상 환경 실행, 디렉터리 이동

 

 

source myvenv/Scripts/activate

cd crudproject/

 

 

현재 home.html의 문제점

 

 

1. 이상한 시간설정

2. 리스트의 정렬이 1번째글이 맨 위

3. 본문 내용을 자세히 안봐도 본문 전체가 출력

 

하나씩 수정해 보도록 하겠습니다.

 

 

1. 시간 설정하기

 

 

LANGUAGE_CODE = 'ko-kr'

TIME_ZONE = 'Asia/Seoul'

USE_I18N = True

USE_L10N = True

USE_TZ = True

 

crudproject의 setting.py에 107 ~ 115번 줄을 보면 기본값은 "LANGUAGE_CODE = 'en-us'"와 "TIME_ZONE = 'UTC'"으로 되어있습니다. 

 

이 부분을 kr와 서울 그리고 False로 바꿔줍니다.

 

LANGUAGE_CODE 변경점

 

 

 

 

 

 

admin페이지 및 django에서 지원하는 언어가 한글로 변합니다.

 

 

TIME_ZONE 변경점

 

 

 

새로 글을 적을때 시간이 한국시간 기준으로 작성됩니다.

 

 

시간 표현에 대한 팁

 

 

<h1>워드 카운트!</h1>

<br><br>
<form action="{% url 'new' %}">
    <textarea cols="40" rows="10" name='fulltext'></textarea>
    <br><br>
    <input type="submit" value="count!" />
</form>

<br>

{% for blog in blogs.all %}
    <h1>{{ blog.title }}</h1>
    <p>{{ blog.pub_date | date:"Y-m-d" }}</p>
    <p>{{ blog.body }}<a href="{% url 'detail' blog.id %}">자세히 보기</a></p> 
{% endfor %}

 

blog.pub_date를 가져올 때 | ( 원 표시 )를 사용하여 date:"Y-m-d"로 설정합니다.

 

이것을 템플릿 필터라고 합니다.

 

|를 사용해 템플릿에 필터를 입혀 원하는 데이터로 필터링 하는것입니다.

 

 

 

 

 

2. 정렬하기

 

 

def home(request):
    blogs = Blog.objects.order_by('-id')
    return render(request, 'home.html', {'blogs': blogs})

 

views.py에서 리스트를 불러오는 함수는 home입니다.

 

객체를 가지고 올 때 order_by를 사용하여 id값을 기준으로 -(역순)으로 출력합니다.

 

id값은 기본값이며 클래스의 title나 date를 사용해 제목, 시간순으로도 나타낼 수 있습니다.

 

 

 

 

 

 

3. 요약하기

 

 

    def summary(self):
        return self.body[:100]

 

새로운 함수 summary를 추가합니다.

 

summary는 body를 첫 글자부터 100글자까지 자른 값을 의미합니다.

 

 

 

 

<h1>워드 카운트!</h1>

<br><br>
<form action="{% url 'new' %}">
    <textarea cols="40" rows="10" name='fulltext'></textarea>
    <br><br>
    <input type="submit" value="count!" />
</form>

<br>

{% for blog in blogs.all %}
    <h1>{{ blog.title }}</h1>
    <p>{{ blog.pub_date | date:"Y-m-d" }}</p>
    <p>{{ blog.summary }}<a href="{% url 'detail' blog.id %}"> ...자세히 보기</a></p> 
{% endfor %}

 

home.html에서는 blog.title를 blog.summary를 불러옵니다.

 

 

 

 

 

100글자에서 잘 잘리는지 Body에 100글자 이상의 내용을 입력 후 새로운 글을 적어줍니다.

 

 

 

 

 

잘 잘리네요. ...자세히 보기를 누르면

 

 

 

 

게시글의 본문 내용을 확인할 수 있습니다.

 

 

git push

 

 

git init

git add .

git commit -m "코멘트"

 

 

 

git push origin master

 

 

 

 - 끝 -

 

---

 

다음 시간에는 bootstrap을 사용해 홈페이지를 꾸며보겠습니다.