*view 만들기- CBV의 제네릭 뷰?
http://ruaa.me/django-view/
-DetailView, Listview: 장고에서 지정해주는 디폴트값 2가지
1. 컨텍스트 변수로 LV는 object_list, DV는 object 사용
2. 템플릿 파일을 LV는 모델명소문자_list.html로 ,
DB는 모델명소문자_detail.html로 지정해주는 것.
Bookmark 페이지 만들기
1. 뼈대: startproject, settings.py, migrate, supeuser, startapp, settings.py (앱등록)
-settings;
DB, 템플릿 설정[os.path.join(BASE_DIR, 'templates')]-안하면 어떻게 되는지 보자,
=> 안하면 안되는듯. 기본 'teplates'를 해주고, APP_DIRS를 True로 하면 앱 안, 안하면 앱 밖에 있어야 되는 듯 하다
=> 전혀 상관 없는듯... BASE_DIR로 지정해놓으면 어디에 있던지 temlplates 폴더를 찾아 간다. 아래 APP_DIRS = True는 기본 장고 앱 디렉토리를 뜻하는것
static( STATICFILES_DIR = [os.path.join(BASE_DIR, 'static')],
타임존 ('Asia/Seoul'), Media, language (ko-kr)
-app 등록: bookmark.apps.BookmarkConfig라고 해야 정확
2. 모델 코딩: models.py, admin.py(모델 등록), makemigrations, migrate
-models.py: title (blank, null True 지정), url ('url', /unique=True), __str__ 추가
-__str__를 추가해야 bookmark 클래스가 해당 값을 str로 반환해준다.
-템플릿 안에서 사용할 때는 받은 object를 활용해 object.title, object.url로 받을 수 있다.
-admin 등록
from django.contrib import admin
from bookmark.models import Bookmark
class BookmarkAdmin(admin.ModelAdmin): # 북마크 클래스가 admin에서 어떤 모습으로 보이는지 정의하는 클래스
list_display = ('title', 'url')
admin.site.register(Bookmark, BookmarkAdmin) # 등록하기
3. URLconf: urls.py
from bookmark.views import BookmarkLV, BookmarkDV
url(r'^bookmark/$', BookmarkLV.as_view(), name='index')
url(r'^bookmark/(?P<pk>\d+)/$', BookmarkDV.as_view(), name='detail')
# as_view()를 통해 BookmarkLV, DV (뒤에 만들 CBV 방식의 뷰 페이지를 쉽게 불러올 수 있다.)
4. 뷰 코딩: views.py (CBV)
from django.views.generic import ListView, DetailView # 제네릭 뷰 임포트
from bookmark.models import Bookmark
class BookmarkLV(ListView):
model = Bookmark
class BookmarkDV(DetailView):
model = Bookmark
5. 템플릿 코딩: templates dir
-템플릿에서는 {{% %}}를 통해서 파이썬 코드를 html 문서 안에서 직접 동작시킬 수 있다.
'backend > django' 카테고리의 다른 글
기본편 1장 웹프로그램의 이해, 2장 파이썬 웹 표준 라이브러리 (0) | 2017.03.08 |
---|---|
실전편- Blog 앱 만들기 (0) | 2017.03.06 |
django tutorial: advanced- 앱 재사용하기 (0) | 2017.03.04 |
django tutorial: 테스트 만들기 에러(python manage.py test polls) (0) | 2017.03.03 |
django tutorial: 어드민 사이트 변경- customizing admin (part7) (1) | 2017.03.03 |