- 
          
          5. Django: ViewsPython/초간단 장고 Django 2019. 7. 8. 08:23반응형1. views.py장고에서는 클래스형 뷰와 함수형 뷰가 있습니다. 
 이 글에서는 클래스형 뷰를 사용할 예정입니다.클래스형 뷰는 미리 만들어진 프리셋을 상속받습니다. 
 장고에서는 이 프리셋을 제네릭 뷰라고 합니다.제네릭 뷰의 종류는 다음 링크를 참고하십시오. ^^; 
 https://wikidocs.net/9623입력과 수정은 관리자 페이지에서 처리하기로 했기 때문에 
 'Generic Display View의 ListView'만 사용하면 됩니다.
 조건에 맞는 객체들의 목록을 보여주는 뷰입니다.다음 예제는 
 Bookmark 테이블(실제로는 클래스)을 읽은 뒤
 'object_list' 변수에 담아
 '모델명소문자_list.html' 템플릿에 넘겨줍니다.'object_list' 와 '모델명소문자_list.html' 는 
 명시적이지 않은 부분이니 유의하시기 바랍니다.'ListView' 제네릭 뷰의 마법이라고 생각하시면 됩니다. 'template_name'으로 지정도 가능합니다. 만약 'DetailView' 라는 제네릭 뷰를 상속받으면 
 'object' 변수와 '모델명소문자_detail.html' 템플릿을 사용하게 됩니다.# bookmarks/views.py from django.views.generic import ListView from bookmarks.models import Bookmark class BookmarkListView(ListView): model = Bookmark # paginate_by = 10코드를 봅시다. 제네릭 뷰 중 하나인 ListView를 임포트합니다. 
 모델에서 Bookmark를 임포트합니다.그리고 ListView를 상속해서 보여질 클래스를 만듭니다. 
 model 속성(클래스 변수)에는 뷰가 출력할 데이터가 들어있는 모델을 지정해야 합니다.
 Bookmark를 바인딩(오버라이딩)합니다.클래스 변수(=속성)는 ListView에서 상속받은 것이기 때문에, 
 이렇게 속성을 다시 지정하는 것을 속성 오버라이딩이라고 합니다.많은 속성들이 있습니다. 북마크가 많아지면 필요한 페이지 기능도 속성에 포함되어 있습니다. # paginate_by = 10 하지만 구현하지 않을 것이기 때문에 #을 붙여두었습니다. 2. urls.py 위 그림을 보시면 아시겠지만 Views를 작동시키려면 URLs을 지정해야 합니다. 언제든지 앱을 분리해서 다른 프로젝트에 붙이기 쉽도록 urls.py도 분리하는 게 좋습니다. myapp/bookmarks 라는 url이 있다면, 
 myapp까지는 config/urls.py 에서
 bookmarks이후는 bookmarks/urls.py 에서 처리하도록 합니다.config/urls.py 수정 config/urls.py 에는 친절하게 다음 안내문이 있습니다. # config/urls.py """ Including another URLconf 1. Import the include() function: from django.urls import include, path 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) """다른 URLconf (URL configuration)를 포함하는 방법에 대한 설명이네요. 
 include 함수가 필요하네요. 따라해 봅시다.# config/urls.py from django.contrib import admin from django.urls import include, path # include 를 추가했습니다. urlpatterns = [ path('admin/', admin.site.urls), path('bookmarks/', include('bookmarks.urls')), # 마지막에 쉼표를 붙이면, 추가할 때 편해집니다. ]bookmarks.urls 는 bookmarks 폴더의 urls.py를 의미합니다. 
 (자동생성되지 않는 파일이라 작성해야 합니다.)앱 단위로 url을 넘겨, 모듈화 시킵니다. 
 차후에 프로젝트를 수정하거나 재사용할 때 편합니다.urls.py를 'url 라우터' 라고도 합니다. config/urls.py 의 안내문 중 읽지 않은 부분을 읽어봅니다. Function views 1. Add an import: from my_app import views 2. Add a URL to urlpatterns: path('', views.home, name='home') Class-based views 1. Add an import: from other_app.views import Home 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')펑션 뷰와 클래스 뷰인 경우, 각각 urls.py에서의 작성 방법이 다릅니다. bookmarks/urls.py 작성 위 안내를 바탕으로 아래 파일을 작성합니다. # bookmarks/urls.py from django.urls import path from bookmarks.views import BookmarkListView urlpatterns = [ path('', BookmarkListView.as_view()), ]URL을 뷰와 연결해주었습니다. 반응형