전체 페이지뷰

2016년 12월 12일 월요일

Blog 앱 만들기 4, URLconf 코딩

앞서 북마크 앱을 만들 때에 URLconf를 각각의 계층에 따로 만들어주는 것이 재사용 측면에서 유리하다고 했습니다. 따라서 이제부터 mysite/urls.pyblog/urls.py의 두 곳으로 나누어서 작성하고, 나누지 않고 한군데에만 작성했던 북마크의 url도 두 군데로 나누어 주겠습니다.



먼저 mysite폴더의 urls.py를 수정하겠습니다.

(myvenv) D:\myDjango\mysite>subl urls.py
하여 mysite의 urls.py를 띄우고

from django.conf.urls import include, url
from django.contrib import admin
#from bookmark.views import BookmarkLV,BookmarkDV  
urlpatterns = [url(r'^admin/', include(admin.site.urls)),
    url(r'^bookmark/', include('bookmark.urls', namespace='bookmark')),  #추가
    url(r'^blog/', include('blog.urls', namespace='blog')),   #추가
    # 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'), ] 주석처리
    ]
cs

다음과 같이 수정합니다.

북마크 사이트와 분리할 예정이므로 여기서 북마크 모델을 임포트할 필요는 없고,
북마크와 블로그의 url을 지정한 후,
가존 북마크 관련 class-based view 부분을 북마크 urls.py로 옮길 예정이므로 주석처리 합니다.

이제 북마크앱의 urls.py를 만들겠습니다.
북마크 폴더로 이동한 뒤,

(myvenv) D:\myDjango\bookmark>subl urls.py
해 주고,
from django.conf.urls import url
from bookmark.views import BookmarkLV,BookmarkDV  
urlpatterns = [
    # Class-based views for Bookmark app
    url(r'^$', BookmarkLV.as_view(), name='index'),
    url(r'^(?P<pk>\d+)/$', BookmarkDV.as_view(), name='detail'), 
]
cs

하여 아까 주석처리한 부분들을 옮겨주고, 정규표현식 부분을 조금 달리해줍니다.


그리고 마지막으로 블로그앱의 urls.py를 만들어줍니다.
(myvenv) D:\myDjango\blog>subl urls.py

from django.conf.urls import url
from blog.views import *
urlpatterns = [
    # Example: /
    url(r'^$', PostLV.as_view(), name='index'),
    # Example: /post/ (same as /)
    url(r'^post/$', PostLV.as_view(), name='post_list'),
    # Example: /post/django-example/
    url(r'^post/(?P<slug>[-\w]+)/$',PostDV.as_view(), name='post_detail'),
    # Example: /archive/
    url(r'^archive/$', PostAV.as_view(), name='post_archive'),
    # Example: /2012/
    url(r'^(?P<year>\d{4})/$', PostYAV.as_view(), name='post_year_archive'),
    # Example: /2012/nov/
    url(r'^(?P<year>\d{4})/(?P<month>[a-z]{3})/$', PostMAV.as_view(), name='post_month_archive'),
    # Example: /2012/nov/10/
    url(r'^(?P<year>\d{4})/(?P<month>[a-z]{3})/(?P<day>\d{1,2})/$', PostDAV.as_view(), name='post_day_archive'),
    # Example: /today/
    url(r'^today/$', PostTAV.as_view(), name='post_today_archive'),
]
cs
상당히 복잡합니다. 날짜 관련되어 필요한 것들이 많아서 그렇습니다.
각각 정규식으로 url을 표시해주고, 필요한 제너릭뷰를 뷰로 지정해 준 뒤 이름을 붙여주는 것으로 URLconf 설정을 마치겠습니다.

댓글 없음:

댓글 쓰기