본문 바로가기
개발Study/web

Django view 추가하기 + Template

by happy90 2020. 10. 25.
SMALL

view에 아래 함수들을 추가한다. 각 함수는 하나의 view가 된다.

변환명세를 이렇게 쓰는구나.

 

urls.py에 위에서 추가한 view들을 연결하기 위한 코드를 작성한다.

Django는 'URLconfs'라는 것을 사용하는데, 이 것이 URL패턴(코드에서 urlpatterns list.)을 view에 연결해준다.

list에 path function이 나열되어 있는데, 이 function의 형식을 보면 int형의 question_id가 첫번째로 들어있다.

127.0.01:8000/mydjango 까지는 이 홈페이지의 main address이고, 그 뒤로 오는 address를 정의할 수 있다.

위의 코드처럼 변수를 넣어 정의할 수도 있다.

두번째 인자는 해당 url에 요청이 들어오면 어느 view를 호출하여 보여줄 것인지 지정해준다.

views.py에서 대응할 함수명을 적어주면 된다. name은 모르겠다. 상관없는 것 같다.

 

이렇게 위처럼 적용하고 web browser에 주소를 127.0.0.1:8000/mydjango/5 라고 적어본다.

코드 예제에 있는 그대로... 결과는 아래와 같이 나온다.

각각 이렇게 표시된다.

 

좀 더 나아가 view 디자인을 할 수 있다.

먼저 프로젝트 폴더 아래에 templates라는 폴더를 만들어준다.

그 안에 디렉토리 몇개 더 만들어준 뒤 index.html을 생성하여 편집한다.

 

index.html :

{% if latest_question_list %}
    <ul>
    {% for question in latest_question_list %}
        <li><a href="/polls/{{ question.id }}/">{{ question.question_text }}</a></li>
    {% endfor %}
    </ul>
{% else %}
    <p>No polls are available.</p>
{% endif %}

위 내용은 html 문법으로, if문, for을 쓸 때 %와 {}를 쓴다. (html몰라서 구글링하며 기록중)

<>꺾쇠는 태그라고 하는데, 시작할때 '<>' 종료할때 '</>' 를 각각 사용하여 안에 문법을 적는다.  

<ul> : unordered list 요소. 순서가 없는 목록 요소라고 한다. list 종류는 몇가지 더 있는 것 같다.

</ul> : 종료할 때 이렇게 써준다. 얘를 써주면 unordered list가 끝나는 것이다.

<li> </li>: unordered list의 자식요소. 여기서 ul의 자식은 하나가 되겠다.

<a href="~~"> </a> : 정확히는 <a> 태그라고한다. anchor의 약자이고, '닻'이라는 뜻이다.

 내가 알고 있는 단어로는 하이퍼링크만들 때 얘를 쓰는 것이고, 속성 href 는 해당 링크 주소를 가리키는 속성이다.

<p> paragraph(문단)의 약자이며, 하나의 문단을 만들 때 사용한다.

if문을 보면 latest_question_list라는 변수의 true 여부에 따라 링크되냐 No polls 어쩌고가 출력되냐가 결정된다.

if latest_question_list변수가 true이면 그 리스트에 question이 있는지 보고, question.id 페이지를 연결시켜주는 것 같다.

 

여기까지 알겠고, 이 template을 view에서 가져다 쓰도록 구현한다.

import 추가 :

index 수정 :

위에 html에 if문에서 필요한 변수를 여기서 입력해준다.

이 함수에서 변수명은 상관없지만, context안에 if문에 들어갈 변수명을 바르게 입력해준다.

context는 템플릿에서 쓰이는 변수명과 python객체를 연결해주는 사전형값이라고 한다. (무슨말?;)

template는 위에서 작성한 index.html의 경로와 파일명을 적어준다. 가져다쓰라고.

return시 HttpResponse function의 인자도 변경된다.

기존에는 그냥 string을 인자로 넣어줬는데, template.render function으로 변경된다.

render function에 context와 request를 넣어주면,

어떻게 나오는지 페이지를 확인해보자.

 

어우;; 링크가 됐네

링크를 클릭! 하면!

예제에 있던 polls를 어딘가에 그대로 썼다. 분명히 . .... 찾아서 mydjango로 바꿔줘야 한다.

링크를 눌러 들어온 site의 이름에 poll이 들어갔으니, 링크하는 부분에서 잘못되었을 터.

index.html을 수정해준다.

이제 잘 나왔다.

LIST

'개발Study > web' 카테고리의 다른 글

Django 지름길  (0) 2020.11.22
Django admin 비밀번호 분실했을 때  (0) 2020.11.15
Django 관리자  (0) 2020.10.25
Python shell in django  (0) 2020.10.18
Django url? view? HTTP?  (0) 2020.10.18

댓글