● Meta
: 필드속성 외에 필요한 파라메터가 있으면 Meta내부 클래스로 정의한다.
* 별칭, 복수 별칭, 테이블명, 정렬방법 등을 정의한다.
- models.py
class Meta:
verbose_name = 'post'
verbose_name_plural = 'posts'
db_table = 'my_poset'
ordering = ('-modify_date',)
● get_absolute_url
페이지를 이동하는 방법중 하나로서 a 태그의 href에서 get_absolute_url를 호출하여 사용한다. {% url %}을 사용하여 get_absolute_url을 대체할 수 있다.
> reverse 함수를 통해서 호출되는 함수와, 파라메터를 지정할 수 있다.
- models.py
from django.urls import reverse
class Post(models.Model):
...
class Meta:
verbose_name = 'post'
verbose_name_plural = 'posts'
db_table = 'my_poset'
ordering = ('-modify_date',)
def get_absolute_url(self):
return reverse('blog:post_detail', args=[self.slug])
...
- post_list.html
...
{% for post in posts %}
<h2><a href="{{ post.get_absolute_url }}">{{post.title}}</a></h2>
<!-- modify_date 를 July 05, 2017 형태로 표시 -->
{{ post.modify_date|date:"N d, Y"}}
<p>{{ post.description }}</p>
{% endfor %}
...
● get_previous_post / get_next_post
이전 포스팅과, 다음 포스팅을 이동할때 사용되는 함수
해당 포스팅이 존재하는지 확인하여 있으면 표시되고 없으면 표시되지 않는다.
- models.py
class Post(models.Model):
...
def get_previous_post(self):
return self.get_previous_by_modify_date()
def get_next_post(self):
return self.get_next_by_modify_date()
...
- post_all.html
<span>
{% if page_obj.has_previous %}
<!-- previous_page_number는 이전 페이지 번호를 나타낸다. -->
<a href="?page={{ page_obj.previous_page_number}}">PreviousPage</a>
{% endif %}
<!-- number는 이번 페이지 번호, paginator.num_pages는 전체 페이지 번호를 나타낸다. -->
Page {{ page_obj.number}} of {{ page_obj.paginator.num_pages }}
{% if page_obj.has_next %}
<!-- next_page_number는 다음 페이지 번호를 나타낸다. -->
<a href="?page={{ page_obj.next_page_number }}">NextPage</a>
{% endif %}
</span>
'python + Django' 카테고리의 다른 글
파이썬 진행상황 (0) | 2019.02.18 |
---|---|
django 가상환경 설정 (windows10) (0) | 2019.02.12 |
제너릭 뷰 (0) | 2019.02.03 |
settings.py 알아보기 (0) | 2019.02.03 |
회원가입 해보기 (0) | 2019.01.27 |