url cof , view

2021. 7. 22. 03:06python/Django

728x90

request가 들어 왔을때 url configration이 url을 보고 분석을 하고 사용자가 원하는 기능을 view에서 찾는다

mvc가 아닌 mvt를 사용함으로 view는 로직을 이야기한다.즉 controller역할을 하게된다 

이때 index()를 호출할건데 index()역할은 로직처리를 한 다음client에게 보여줄 화면을 만드는데 templete을 주워서 data를 덧씌워서 최종결과화면(rendering)을 만든다


1.url confing가 request 분석후 view에서 index()함수 호출
2.index()가 로직처리후 template에 있는 index.html을 들어서 rendering결과 만들어 돌려준다

 

 

 


-url 과 view의 mapping 작업

0. views를 가져오기 위해 상단에

from polls import views를 입력


1.my site - url.py 들어간다
2.
-path('1 / 2' name='') 
1번들어오면 2번 해!!라는 의미
(1은url 마지막), 
(2는 view modul) - 상단에 import 로 호출
(name='') html에서 id와 같은 의미로 2의 이름입력 

https://sungin.tistory.com/61h의 중첩구조 참조







view.py
template (기반, 기초)
결과를 뺀 껍데기 html

1. url conf의 request는 view의 함수로 객체화시켜서 전달
def index(request):

-현재 Database안에 있는 Question Table 속에 질문에 대한 목록을 가져오는거에요!
-이 목록을 가지고 결과 HTML을 Template을 이용해서 만들어 클라이언트에게 전달!

2. Database에 접속해서 Question Table의 질문 목록을 sql이 아닌 orm을 이용해 가져와요! (모듈로 가져오기)


from polls.models import Question(상단에)

3.class는 table을 지칭하고 instance는 record를 지칭 

q_list = Question.objects.all().order_by('-pub_date')
== Question부터 파생된 objects 모두 호출
== db를 포함한 로직처리

*oder_by() : 정렬(어떤기준)
정렬은 오름차순(작은게 위에 앞에)
정렬의 내림차순(pub앞에 -를 붙인다)

4. (로직 결과를 Template 얹기위해)
context 객체를 만들어서 Template을 이용해 rendering 한 결과를 리턴!

로직 결과를 rendering 해야하려면 template(으로 만든html)에 전달하려면 dic으로 처리해야 하는데 주로 context객체라 불린다

context = {'question_list' : q_list}

-key값은 우리가 정한다
-value는 로직 값

5.rendering을 해야한다!(html과 context결과)

return render(request,'polls/index.html', context)

1번째 객체는 request
2번째 객체는 폴더 / template html
3번째 객체는 만든결과 context객체
마지막으로 return (을 하면 client에게 전달)

from django.shortcuts import render
2. from polls.models import Question

   1. def index(request):

    

        3. q_list = Question.objects.all().order_by('-pub_date')



  4.  context = {'question_list': q_list}
  5. return render(request, 'polls/index.html', context)

question data를 뒤져 모든 record를 가져와 객체화 시켜
index.html tempate파일에 결과를 rendering해서 client에게 돌려줌


 

 



확인을 위해 polls - templates - polls - inddex.html 순으로 만들어서 urlconf까지 하고
localhost:8000/polls/로 확인




'python > Django' 카테고리의 다른 글

polls 선택 page만들기  (0) 2021.07.23
polls 질문page 만들기  (0) 2021.07.23
admin page에 model(data) 등록하기  (0) 2021.07.21
model만들기(db에 table생성 작업)  (0) 2021.07.21
Django 초반설정  (0) 2021.07.21