본문 바로가기

python + Django

models.py 추가 사항

● 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