Django MVC 패턴
Django 도 MVC (Model View Controller) 의 패턴을 따른다.
Model : models.py
View : template (index.html)
Controller : views.py
동작 순서는 다음과 같다.
mysite/urls.py로 가서 해당 urlpattern 본다.
우리는 여기서 http://localhost:8000/polls를 호출 했으니,
mysite/urls.py
from django.contrib import admin from django.urls import path , include urlpatterns = [ path('polls/' , include('polls.urls')), path('admin/', admin.site.urls), ] |
해당 url을 따라서 polls/urls.py를 따라간다.
polls/urls.py
from django.urls import path from . import views app_name = 'polls' urlpatterns =[ path('', views.IndexView.as_view(), name='index'), path('/', views.DetailView.as_view(), name='detail'), path('/results/', views.ResultsView.as_view(), name='results'), path('/vote/', views.vote, name='vote'), ] |
여기에서 http://locahost:8000/polls 를 호출했으니 indexView를 따라간다.
polls/views.py
class IndexView(generic.ListView): template_name = 'polls/index.html' context_object_name = 'latest_question_list' def get_queryset(self): """Return the last five published questions.""" return Question.objects.order_by('-pub_date')[:5] class DetailView(generic.DetailView): model = Question template_name = 'polls/detail.html' class ResultsView(generic.DetailView): model = Question template_name = 'polls/results.html' def vote(request, question_id): question = get_object_or_404(Question, pk=question_id) try: selected_choice = question.choice_set.get(pk=request.POST['choice']) except (KeyError, Choice.DoesNotExist): return render(request, 'polls/detail.html', { 'question': question, 'error_message': "You didn't select a choice.", }) else: selected_choice.votes += 1 selected_choice.save() return HttpResponseRedirect(reverse('polls:results', args=(question.id,))) |
여기서 index.html을 호출 해서 화면을 보여준다.
polls/templates/polls/index.html
{% if latest_question_list %} <ul>
</ul> {% else %} No polls are available. {% endif %} |
이런식으로 구동되고,
위에 붙인 소스가 주요 코드이다.
ㅎㅎ mvc 패턴은 생각보다 익숙하지만
python 문법이나 django 모두 생소해서
어려운 부분이 많은것 같다..
그리고 python은 주로 backend로 난 이용할것 같은데.. front보다는
그부분에 대해서 어떻게 구현할지를 더 고민해보아야겠다..
그리고 깊이를 익히기 위해선 책을 한권 빌려서 보는게 빠를것 같다
튜토리얼은 그래도 한번 가볍게 따라하기 좋은것 같다 역시
참고
https://docs.djangoproject.com/ko/3.0/intro/tutorial03/
'DEVELOP > Backend' 카테고리의 다른 글
Django CORS 설정하기 (0) | 2020.03.26 |
---|---|
python pip Proxy 설정하기 (0) | 2020.03.24 |
Django 시작하기 [2] 데이터베이스 만들기 (0) | 2020.03.18 |
Django 시작하기 [1] Python , Django 설치 및 프로젝트 생성 (0) | 2020.03.18 |
Spring에서 Async 처리 (@Async ) (0) | 2020.03.06 |