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
반응형
'웹 프로그래밍' 카테고리의 다른 글
[Django Tutorial] Blog 만들기 (6) (0) | 2021.04.19 |
---|---|
[Django Tutorial] Blog 만들기 (5) (0) | 2021.04.19 |
[Django Tutorial] Blog 만들기 (4) (0) | 2021.04.19 |
[Django Tutorial] Blog 만들기 (2) (0) | 2021.04.19 |
[Django Tutorial] Blog 만들기 (1) (0) | 2021.04.19 |