polls 질문page 만들기

2021. 7. 23. 01:11python/Django

728x90

-template는 data랑 합쳐지기때문에 html이랑은 좀 다르다
-template engine이 주체가 되어 view에서 나오는 context값도 알고 html도 알고 있어 context dic값을 사용할수 있다
 


ctrl + chift + / (html주석) : 
{% comment %} = temlate의 특별한 표현법 rendering전에 rendering engice이 주석처리, html주석은 브라우저가 주석처리

{% %} - template tag, 로직, 프로그램적요소 사용가능

{{ }} - 값을 찍고싶을때는 중괄호 2개이다

{% if %} - 사용시 :를 안써도 되지만 마지막에 {% endif %}를 작성해야한다

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

-질문 페이지 만들기

1. data(row)값이 비어있으므로 admin에 들어가서 값을 입력한다

2. for문을 돌려 question_text를 찍어준다
(여기서부터는 각각 질문 다음의 request가 다르게 가므로 각각의 id가 부여)

3.question.question_text에 링크를 달아준다
<a href="polls/{{ question.id }}">    
(url/polls)/각각id넣어라 라고 보면 된다

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ


-url.py

에 id넣은것들, 다른app페이지를 매번 
넣기에는 너무 많아 중첩구조를 만든다

1. 중첩구조를 사용하기 위해, include를 사용하기 위해 상단의
from django.url import path 옆에 , 찍고 include 입력

 


2.하단의 path('polls/, include('poll.url')')입력
(1) 번째는 application 입력
- application이 매칭이 되면 urlconf작업은 (2번)니가 라는 의미

- polls/ 관련 url이 오면 위 작업 처리
(2) 번째는 include('application.urls')
그러므로 application packge안에 url라는 modul이 있어야 한다. 그래야 처리

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ


3.modul이 있어야 하므로 application안에 python 파일을 urls라는 이름으로 생성
(1)path모듈이 url과 view를 이어줌으로
상단에 from django.urls import path 입력


(1.5)view모듈이 view의 함수와 request를 연결시켜줌으로
상단에 from . import views


(2)app_name = 'polls'입력
일반적으로 app_name변수를 사용

(name space로 추후 url py의 이름을 분리하기 위해 )

-form에 사용하며 최종본 참조


(3)urlpatterns작성
urlpatterns = [ path('', views.이름, name=이름)]
https://sungin.tistory.com/60 참조 

단''(1)번째는 비워둬야한다 그렇지 않으면 /polls/polls가 된다


(4)url/app/id 의 id(숫자)를 주기위해 아래형식에 맞춰 작성
urlpatterns = [ path('<int:변수>'/, views.이름, name=이름)]

 

 

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ


-view 를 호출했으니 view작성하러 view.py이동
(1)def 이름(request,urls에서 사용한 변수):     입력
-변수가 결국 사용자가 선택한 질문의 pk


(2)상단 from django.shortcuts import render에 , 찍고 get_object_or_404 입력
 get_object_or_404 = 1개의 객체만 가져오거나 못찾거나

(번외로 404는 http protocal에서 나올수있는 에러로 의미는 not found)


(3)question(변수) = get_object_or_404(Question, pk=question_id)
1/table에서 record를 뽑는거랑 class에서 intance를 뽑는거나 동일개념(feat orm)
이므로 404() 첫번째는 클래스명
2/ pk가 url에서 사용한변수랑 같은조건하에서 1/클래스에서 instance를 하나 뽑을거야 아니면 404를 띄운다


(4)context = {'question':question}
키값으로 객체를 붙여야한다 키값은 변수라 생각하고 val값은 (3)의question


(5)return(request, 'polls/ detail.html', context)
1/ 무조건 request
2/ polls폴더에 화면에 돌려줄 html 이전에만든 templates폴더에 있다(생성)
3/ (4)에서 만든 context

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ


modul이름
from polls import views(절대경로)  
from . import views(상대경로)

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

polls 결과page만들기  (0) 2021.07.26
polls 선택 page만들기  (0) 2021.07.23
url cof , view  (0) 2021.07.22
admin page에 model(data) 등록하기  (0) 2021.07.21
model만들기(db에 table생성 작업)  (0) 2021.07.21