[Django Tutorial] Blog 만들기 (3)
웹 프로그래밍

[Django Tutorial] Blog 만들기 (3)

728x90
반응형

urls.py

템플릿 정의

mysite/urls.py

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

from . import views
from django.conf.urls import include
urlpatterns = [
    path('admin/', admin.site.urls),

    path('', views.HomeView.as_view(), name='home'), # 홈 패스
    path('blog/', include('blog.urls')), # 블로그 패스
    #from django.conf.urls import include 주의
]

 

blog/urls.py (생성해준다)

* urlpatterns에 path() 넣어줄때 ctrl+space*2 하면 자동 import 됨. (from django.urls import path) 

* urlpattern을 만들때 장고의 규칙: 앞에 /는 안붙이고 뒤에 /는 붙여주어야한다.

from django.urls import path

from blog import views


app_name='blog' #보통 application namespace는 어플리케이션 이름하고 동일하게 한다.
urlpatterns=[
    path('post/list/', views.PostLV.as_view(), name='post_list'), #미리만들어둔 뷰이름을 따른다
    path('post/<int:pk>/', views.PostDV.as_view(),name='post_detail'),
    #<int:pk> 이런걸 path converter라고 함. 그 자리의 단어를 int로 바꿔서 파라미터이름은 pk로 해서 뷰에 넘긴다.
]

 

views.py

mysite/views.py

홈뷰는 특정 앱에 속한게 아니므로 mysite 밑에 만든다.

*홈뷰는 테이블과는 무관하고 단순히 템플릿 내용만 화면에 보여주는 기능이므로 TemplateView를 상속받는다.

from django.views.generic import TemplateView


class HomeView(TemplateView):
    template_name='home.html' #TemplateView에서 template_name속성은 필수이다.

 

blog/views.py

* PostLV는 테이블에서 복수의 레코드를 가져오는 뷰이므로 ListView를 상속받는다.

* PostDV는 테이블에서 특정 레코드 하나를 가져오는 뷰이므로 DetailView를 상속받는다. 

from django.views.generic import ListView, DetailView

from blog.models import Post


class PostLV(ListView):
    model=Post
    #template_name='blog/post_list.html' #default라 생략해도됨

class PostDV(DetailView):
    model=Post
    #template_name = 'blog/post_detail.html'  # default라 생략해도됨

 

templates (HTML5)

templates/home.html : 우선 임시로 작성한다

blog/templates/blog/post_list.html: 임시로 작성

blog/templates/blog/post_detail.html: 임시로 작성

 

 

728x90
반응형