지난 시간까지 django와 mysql연동을 해보고 이제 본격적으로 프로젝트와 앱을 연동해보기로 한다.
먼저 메인디렉토리 urls.py에 들어가서,
from django.contrib import admin
from django.urls import path
from django.conf.urls import include, url
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('todo_main.urls')),
path('index/', include('todo_main.urls')),
path('home/', include('todo_main.urls')),
#board app
path('board/', include('todo_board.urls')),
]
위와 같이 수정한다. 각 주소로 들어가면 todo_main 앱의 urls에 연동시키겠다는 의미이다. todo_main.urls에서 받기 위해 main앱에 urls.py를 만들어준다. (board app도 마찬가지)
todo_main urls.py에
from django.conf.urls import url, include
from . import views
from django.conf import settings
from django.conf.urls.static import static
app_name = 'todo_main'
urlpatterns = [
url(r'^$', views.Todo_main.as_view(), name = 'todo_main'),
]
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
위와 같이 설정해준다. todo_main으로 localhost:8000패턴이 들어오면 (r'^$')Todo_main.as_view 를 실행하라는 의미.
Todo_main 은 views.py에서 설정한다.
from django.shortcuts import render, redirect
from django.views import View, generic
class Todo_main(generic.TemplateView):
def get(self, request, *args, **kwargs):
template_name = 'todo_main/index.html'
return render(request, template_name)
views에 가서 generic view를 통해 페이지를 만든다.
장고에서는 function based view와 generic view 두가지 형태가 있는데 function based는 세세하게 코딩할때 사용하고 generic view는 보다 간결하고 단순한 코드일때 사용하다.
Todo_main에 TemplateView를 보여주는데 get방식으로 받을때는 todo_main/index.html로 이동하라는 의미이다. index.html을 만들고 아무 문자를 입력한 다음 로컬호스트로 들어가면 브라우저에 화면이 띄어지는 것을 볼 수 있다.