본문으로 바로가기

FBV 예시1 - 직접 문자열로 HTML 형식 리스폰스

# myapp/views.py
from django.http import HttpResponse

def post_list1(request):
    name = '공유'
    return HttpResponse('''
                        <h1> hello, </h1>
                        <p>{name}</p>
                        <p>반가워요</p>
                        '''.format(name=name))

FBV 예시2 - 템플릿을 통해 HTML 형식 리스폰스

# myapp/views.py
from django.shortcuts import render

def post_list2(request):
    name = '홍철'
    return render(request, 'dojo/post_list.html', {'name': name})

 

<!-- myapp/templates/myapp/post.list.html -->

<h1>hello</h1>
<p>{{name}}</p>
<p>반가워요</p>

FBV 예시3 - JSON 형식 리스폰스

# myapp/views.py
from django.http import HttpResponse, JsonResponse

def post_list3(request):
    return JsonResponse({
        'message' : '안녕 파이썬 장고',
        'items' : ['파이썬', '장고', 'AWS', 'Azure'],
    }, json_dumps_params = {'ensure_ascii': True})

FBV의 json 형식 리스폰스

  • 크롬확장프로그램 JsonView 를 통해서 서버에서 전달한 Json 응답을 브라우저에서 읽기 쉽도록 표시

FBV 예시4 - 파일 다운로드 리스폰스

# myapp/views.py
import os
from django.http import HttpResponse

def excel_download(request):
    # 현재 프로젝트 최상위 (부모폴더) 밑에 있는 'scimagojr-3.xlsx' 파일
    filepath = os.path.join(settings.BASE_DIR, 'scimagojr-3.xlsx')
    filename = os.path.basename(filepath) # 파일명만 반환

    with open(filepath, 'rb') as f:
        response = HttpResponse(f, content_type='application/vnd.ms-excel')
        # 필요한 응답헤더 세팅
        response['Content-Disposition'] = 'attachment; filename="{}"'.format(filename)
        return response

# settings.py
# 현재 파일의 부모경로, 부모경로를 반환
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
  • os.path.dirname(path) : 입력받은 파일/디렉터리의 경로를 반환
  • os.path.join(path1[,path2[,…]]) : 해당 OS 형식에 맞도록 입력 받은 경로를 연결
  • os.path.basename(path) : 입력받은 경로의 기본 이름(base name)을 반환한다. abspath() 함수와 반대되는 기능을 수행

 

 

원본 링크 : https://wayhome25.github.io/django/2017/03/19/django-ep3-fbv/