본문 바로가기
WEB기초/Django

[Django] Request/Response/Redirect

by 별토끼. 2017. 8. 18.
반응형
[Django]  Request/Response/Redirect


  • dict type 데이터 전달받기


1.





2.

html 생성


3.

views에 연결 메소드 생성

 - dict타입으로 dict타입인 mem을 전달한다. (주의해서 보기!)

1
2
3
4
5
6
def show_member(request):
    # DB 에서 읽어온 회원 정보라고 가정하자
    mem={"num":1,"name":u"김구라","addr":u"노량진"}
    # html 페이지에 전달할 dict 에 mem 이라는 키값으로 dict type
    # 전달하기
    return render_to_response("show_member.html",{"mem":mem})
cs

4.

urls에서 맵핑시키기

1
2
3
4
5
6
7
8
9
10
11
12
13
#-*- coding: utf-8 -*-
 
from django.conf.urls import url
from django.contrib import admin
from Django01 import views
 
urlpatterns = [
    # root (빈) 요청이 들어왔을 때 views.py 에 있는 index 메솓로
    # 요청 처리하기
 
    # /show_member
    url(r"^show_member/$", views.show_member)
]
cs


5.

html에서 받기

1
2
3
4
5
6
7
8
9
10
11
12
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>templates/show_member.html</title>
</head>
<body>
<p>번호 : <strong>{{mem.num}}</strong></p>
<p>이름 : <strong>{{mem.name}}</strong></p>
<p>주소 : <strong>{{mem.addr}}</strong></p>
</body>
</html>
cs



  • tuple type 데이터 전달받기

1.
index에 링크 추가
1
    <li><a href="friends">friends</a></li>
cs

2.
views
1
2
3
4
5
6
def friends(request):
    # DB에서 읽어온 친구 목록이라고 가정하자
    friends=(u"김구라", u"해골", u"원숭이", u"주뎅이", u"덩어리")
    
    # dict 에 friends 라는 키값으로 tuple type 전달하기
    return render_to_response("friends.html", {"friends":friends})
cs


3.

urls

1
2
    # /friends/ 요청처리
    url(r"^friends/$", views.friends)
cs


4.

html에서 받기

 - tuple에 들어있는 문자열 받기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>친구 목록입니다.</title>
</head>
<body>
<ul>
    {% for item in friends %}
        <li>{{item}}</li>
    {% endfor %}
</ul>
</body>
</html>
cs


  • tuple에 있는 dict타입 문자 받기
1.
index에 링크 추가
1
    <li><a href="members">members</a></li>
cs


2. 
views
1
2
3
4
5
6
7
8
9
10
11
def members(request):
    # DB 에서 읽어온 회원 목록 이라고 가정하자
    mem1 ={"num":1"name":u"김구라""addr":u"노량진"}
    mem2 ={"num":2"name":u"해골""addr":u"행신동"}
    mem3 ={"num":3"name":u"원숭이""addr":u"상도동"}
    
    # 회원 목록이 들어있는 tuple
    members=(mem1, mem2, mem3)
    
    # dict type 이 들어있는 tuple type 전달하기
    return render_to_response("members.html", {"members":members})
cs

3.
urls
1
2
    # /members/ 요청처리
    url(r"^members/$", views.members) 
cs

4.
html에서 받기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" href="/static/css/bootstrap.css" />
</head>
<body>
<div class="container">
    <table class="table table-bordered">
        <thead>
            <tr>
                <th>번호</td>
                <th>이름</td>
                <th>주소</td>
            </tr>
        </thead>
        <tbody>
            {% for item in members %}
                <tr>
                    <td>{{item.num}}</td>    
                    <td>{{item.name}}</td>
                    <td>{{item.addr}}</td>        
                </tr>
            {% endfor %}
        </tbody>
    
    </table>
</div>
 
cs



  • get방식 parameter 넘겨주기

1.

index에 링크 추가

 - 

1
<li><a href="detail?num=999">글 자세히 보기</a></li>
cs


2.

views

1
2
3
4
5
6
def detail(request):
    # GET 방식 전송 파라미터 추출하기
    num = request.GET.get("num")
    print "num:", num
    
    return HttpResponse("detail ok"# 임시응답
cs


3.

urls

1
2
    # /detail/ 요청처리
    url(r"^detail/$", views.detail),   
cs



4.

출력결과


  • post방식 처리하기
1.
index.html에 post방식의 form을 만든다.
1
2
3
4
5
6
7
<!-- post 방식 전송을 하기 위해서는 csrf_token 이 필요하다 -->
<form action="insert/" method="post">
    {% csrf_token %}
    <label for="msg">메세지</label>
    <input type="text" name="msg" id="msg" />
    <button type="submit">전송</button>
</form>
cs


2.

views

1
2
3
4
5
6
def insert(request):
    # POST 방식 전송 파라미터 추출하기
    msg = request.POST.get("msg")
    print "msg:", msg
    
    return HttpResponse("insert ok")
cs


3.

urls

1
2
    # /insert/ post방식 요청처리
    url(r"^insert/$", views.insert), 
cs



  • redirect 처리하기

1.
html에 링크추가
1
    <li><a href="/game/play">링크 클릭후 주소창 확인!</a></li>
cs


2.

views

 - 리다일렉트 이동하도록 /game/stop 으로 한뒤

 - url에서 gameStop으로 요청을 보내면 응답한다.

1
2
3
4
5
6
7
8
def gamePlay(request):
    print "/game/play 요청 처리됨"
    
    # 리다일렉트 이동
    return HttpResponseRedirect("/game/stop/")
 
def gameStop(request):
    return HttpResponse(u"redirect 이동됨")
cs


3.

urls

 - /game/play 요청 처리

1
2
3
    # /game/play 요청처리
    url(r"^game/play/", views.gamePlay),    
    url(r"^game/stop/", views.gameStop),   
cs


반응형

'WEB기초 > Django' 카테고리의 다른 글

[Django] CRUD 만들기  (0) 2017.08.21
[Django] application 이용하기  (0) 2017.08.18
[Django] Django시작하기  (0) 2017.08.17

댓글