backend/django

장고 개발 기본, Bookmark 앱 만들기

seul chan 2017. 3. 5. 01:12


*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 문서 안에서 직접 동작시킬 수 있다.