웹 서비스를 개발하면서, 모바일용으로 앱을 개발해서 서비스의 확장성을 가지려고 한다.
현재 개발하고 있는 웹 서비스는 Django 1.5.1이고, 여기에 rest-framework를 설치하여 간단하게 JSON으로 만들어서 모바일에서 활용할 수 있도록 하였다.
어떻게?
1. DJANGO REST FRAMEWORK를 설치하고 기본적인 설정을 해준다.
http://django-rest-framework.org/
설치하는 방법과 설정 방법은 위 사이트에 잘 설명되어 있다.(http://django-rest-framework.org/#installation)
2. 이미 만들어 놓은 DJANGO App이 있다면, 그 앱 폴더에 serializers.py 파일 생성하고
아래와 같이 간단하게 모델을 연결시킨다.
#-*- coding:utf-8 -*-
from rest_framework import serializers
from models import TestModel
class TestSerializer(serializers.ModelSerializer):
class Meta:
model = TestModel
fields = ('Name', 'Description','Thumbnail')
3. urls.py에 아래와 비슷한 형식으로 삽입
...
url(r'^test/$', test_list),
...
4. views.py에 아래처럼 작성.
from rest_framework.renderers import UnicodeJSONRenderer
from django.http import HttpResponse
from serializers import TestSerializer
from rest_framework.response import Response
from rest_framework.decorators import api_view
from rest_framework import status
class JSONResponse(HttpResponse):
def __init__(self, data, **kwargs):
content = UnicodeJSONRenderer().render(data, 'application/json; indent=4')
kwargs['content_type'] = 'application/json'
super(JSONResponse, self).__init__(content, **kwargs)
@api_view(['GET','POST'])
def test_list(request, format=None):
if request.method == 'GET':
packages = TestModel.objects.all()
serializer = TestSerializer(packages, many=True)
return JSONResponse(serializer.data)
...(중요하지 않은 부분 생략)..
5. 이제 테스트만 하면 된다.
웹 브라우저에서나 curl을 이용하면 된다.
curl http://127.0.0.1:8000/test/
JSON포맷으로 응답이 올것이다.
[참고사항]
DB와 연동을 하는 부분에서 인코딩은 참 신경이 쓰인다. 그래서, 모두 UTF-8을 기준으로 한다.
MySQL 서버도 데이터베이스를 생성할때 utf8로 character set을 설정하도록 하고, rest framework에서도 한글을 사용하기 위해서 JSONRenderer가 아닌 UnicodeJSONRenderer를 사용하도록 한다. 그래야 한글이 정상적으로 나오게 된다.
'Web' 카테고리의 다른 글
make install 대신에 checkinstall 을 사용할 것. (0) | 2013.09.05 |
---|---|
ucloud 서버 신청하고 nginx 설치하기. (0) | 2013.09.04 |
css gradient 쉽게 디자인 하기 좋은 사이트 (0) | 2013.07.13 |
Django + mysql 에서 한글저장.. (0) | 2013.06.23 |
celery 적용한 django app의 비동기 수행 실험. (0) | 2013.06.05 |