Language/Javascript

Slickgrid 와 django의 연동

TechNote.kr 2015. 10. 16. 00:48
728x90

현재 사용하고 있는 Django에 Slickgrid를 연동하였다.


기본적으로 slickgrid는 django의 static에 위치시키고 templete에서 호출하여 사용한다. (일반 이미지를 읽어 오듯이)


여기까지는 별다른 문제가 없는데 views.py 에서 templete로 넘기는 data 형식이 아직 감이 잡히지 않는다.


결국에는 json 형식으로 data를 생성하여 slickgrid 생성시에 argument로 넘겨줘야 하는데,


django에서 json 형식으로 만들어서 templete로 넘겨 주는냐 

아니면 dict 상태에서 templete로 넘겨 javascript에서 json 형태로 만들어서 사용하느냐의 차이일것 같다.


grid = new Slick.Grid("#myGrid", data, columns, options);


django-slickgrid 라는 프로젝트 (https://github.com/pombredanne/django-slickgrid) 에서는 아래와 같은 변환을 거치고 있다.


 database에서 받아온 queryset 상태 -> dict 형태 변환 -> json 형태로 변환 -> templete으로 바로 넘겨줌


models.py


from django.db import models

# Create your models here.
class currentShareData(models.Model):
    date = models.DateField(blank=True)
    code = models.CharField(max_length=8)
    test = models.CharField(max_length=8)

    def __unicode__(self):
        return self.code

    def as_dict(self):
        return dict(
                code = self.code,
		test = self.test
		)

models.py 내에 model class 내부 function으로 내부 변수들을 dictionary 형태로 return 할 수 있도록 한다. 


views.py


    List = Data.objects.all().order_by('code')

    json_data = []
    for record in List:
        json_data.append(record.as_dict())

    context = {'currentList' : json.dumps(json_data)}
    return render(request, 'index.html', context)

databases에서 받은 result data는 queryset 형태로 return 된다.

이를 record별로 iterate하면 model class로 확인이 가능한데 .as_dict를 호출하여 dictionary 형태로 변환한다.

이후 json.dumps 를 이용해 json data로 변환시키고 templates쪽으로 넘겨준다. 


templates/index.html



views.py에서 넘겨받은 data는 safe tag를 사용하여야 한다.

그렇지 않으면 json data형태가 변경되어 사용하지 못하게 된다.

728x90

'Language > Javascript' 카테고리의 다른 글

javascript is eating the world.  (0) 2015.12.23
ajax POST debugging 방법  (0) 2015.12.12
ajax를 이용한 async post data 저장  (0) 2015.11.16
Slickgrid grid options  (0) 2015.11.16
Slickgrid example1-simple.html 분석  (0) 2015.11.16
ajax  (0) 2015.11.02
Closure - 클로저  (0) 2015.10.25
Grid - Slickgrid  (0) 2015.10.24