Django - 북마크 만들기 3 (urls.py, views.py)

yunseul·2024년 6월 9일

Django

목록 보기
6/30

web/urls.py 와 bookmark/urls.py 둘 다 사용하는 방법이 있지만, 현재는 간단하게 방법을 공부하는 것이므로 web/urls.py 하나의 파일로만 진행.

실제로 프로그래밍을 할 때는 2개의 파일로 구성하는 것을 권장

urls.py 수정

### 위치 이동
cd /Users/user/test/django/project/web/web
vi urls.py

---

from django.contrib import admin
from django.urls import path
from django.conf.urls import url
from django.contrib import admin

from bookmark.views import BookmarkLV, BookmarkDV

urlpatterns = [
    path('admin/', admin.site.urls),

    url(r'^admin/', admin.site.urls),

    # Class-based views for Bookmark app
    url(r'^bookmark/$', BookmarkLV.as_view(), name='index'),
    url(r'^bookmark/(?P<pk>\d+)/$', BookmarkDV.as_view(), name='detail'),
]

  • from django.conf.urls import url : django의 내장함수 url() 함수를 import
  • from bookmark.views import BookmarkLV, BookmarkDV : URLconf 에서 view 를 호출하는 것이므로, 뷰의 관련 클래스를 임포트 (간단히, "from bookmark.views import * ")
  • url(r'^admin/', admin.site.urls), : admin 관련 URLconf 정의
  • url(r'^bookmark/$', BookmarkLV.as_view(), name='index'), : url /bookmark/ 요청을 처리할 뷰 클래스를 BookmarkLV 로 지정하고, 패턴의 이름은 index
  • url(r'^bookmark/(?P\d+)/$', BookmarkDV.as_view(), name='detail'), : url /bookmark/숫자/ 요청을 처리할 뷰 클래스를 BookmarkDV 로 지정하고, url 패턴의 이름은 detail

애플리케이션의 로직을 분석한 후, 가장 적합한 제네릭 뷰를 선택해야 함

bookmark 애플리케이션의 경우에는 ListView, DetailView 가 적합 함

Views.py 수정

### 위치 이동
cd /Users/user/test/django/project/web/bookmark
vi views.py

---

from django.shortcuts import render
from django.views.generic import ListView, DetailView
from bookmark.models import Bookmark

# Create your views here.

# -- ListView
class BookmarkLV(ListView) :
    model = Bookmark

# -- DetailView
class BookmarkDV(DetailView) :
    model = Bookmark

  • from django.views.generic import ListView, DetailView : 클래스형 제네릭 뷰를 사용하기 위해 ListView, DetailView 클래스를 import
  • from bookmark.models import Bookmark : 테이블 조회를 위해 모델 클래스를 import

class BookmarkLV(ListView) :

  • Bookmark 테이블의 레코드 리스트를 보여주기 위한 view 이며, ListView 제네릭 뷰를 상속
  • 첫 번째 : 컨텍스트 변수로 object_list 를 사용한 것
  • 두 번재 : 템플릿 파일을 모델명소문자 list.html 형식의 이름으로 지정 → 템플릿 파일 명은 bookmark_list.html 이 된다.

class BookmarkDV(DetailView) :

  • Bookmark 테이블의 특정 레코드에 대한 상세 정보를 보여주기 위한 view 이며, DetailView 제네릭 뷰를 상속
  • 첫 번째 : 컨텍스트 변수로 object_list 를 사용한 것
  • 두 번째 : 템플릿 파일을 모델명소문자 detail.html 형식의 이름으로 지정 → 템플릿 파일 명은 bookmark_detail.html

참고 자료

profile
새로운 것을 시도하고 도전하는 것을 좋아하는 Engineer 입니다..

0개의 댓글