Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 예스인테리어
- 루비 온 레일즈
- css3
- express-mysql-session
- 장고
- 꿀팁
- 모닝버드
- 웹프로그래밍
- 루비
- 루비온레일즈
- nodejs
- 데스크탑애플리케이션
- node.js
- 웹 프로그래밍
- Ruby On Rails
- rails
- 레일즈
- 웹 프로그래밍 입문
- nodejs api
- Python
- 모듈화
- 홈페이지 개발하기
- 파이썬 웹 프레임워크
- 웹 프론트엔드
- Django
- 프론트엔드
- rails review
- 장고 공부하기
- django 공부하기
- jquery
Archives
- Today
- Total
노래하듯 이야기하고, 춤추듯 정복하라.
Portfolio App 생성 & field.py 코딩 _Django 본문
#Portfolio App 개발
우선 장고는 각 주요 기능별로 애플리케이션을 만들어 개발/관리가 가능하다. 'Yes Interior' 웹 페이지의 핵심기능인 Portfolio앱을 첫 번째로 만들었다. 관리자(사업 주)가 공사를 진행하는 과정, 완료 모습 등의 내용을 사진과 글로 포스팅하여 포트폴리오 형식으로 정리할 수 있는 기능이다.
관리자가 올린 이미지를 원본크기와 썸네일크기로 저장하여 보여줄 수 있는 커스텀 필드를 field.py파일을 생성하여 코딩했다.
- field.py (ThumbnailImageFieldFile, ThumbnailImageField)
def _add_thumb(s): parts = s.split(".") # 파일명을 '.'을 기준으로 splite함 parts.insert(-1, "thumb") # split된 조각 맨 뒤에 'thumb'를 삽입 if parts[-1].lower() not in ['jpeg', 'jpg']: # 소문자로 변환한 문자열 맨끝이 []안의 확장자가 아닐 시 parts[-1] = 'jpg' # .jpg로 변환함 return ".".join(parts) # split된 parts를 다시 join함 class ThumbnailImageFieldFile(ImageFieldFile): def _get_thumb_path(self): return _add_thumb(self.path) thumb_path = property(_get_thumb_path) def _get_thumb_url(self): return _add_thumb(self.url) thumb_url = property(_get_thumb_url) def save(self, name, content, save=True): super(ThumbnailImageFieldFile, self).save(name, content, save) img = Image.open(self.path) size = (128) img.thumbnail(size, Image.ANTIALIAS) background = Image.new('RGBA', size, (255, 255, 255, 0)) background.paste(img, (int((size[0]-img.size[0])/2), int((size[1]-img.size[1])/2))) background.save(self.thumb_path, 'png') def delet(self, save=True): if os.path.exists(self.thumb_path): os.remove(self.thumb_path) super(ThumbnailImageFieldFile, self).delete(save) class ThumbnailImageField(ImageField): attr_class = ThumbnailImageFieldFile def __init__(self, thumb_width=128, thumb_height=128, *args, **kwargs): self.thumb_width = thumb_width self.thumb_height = thumb_height super(ThumbnailImageField, self).__init__(*args, **kwargs)
#setting.py에 STATICFILES_DIR을 설정하고 static폴더를 생성하기
css와 js코드를 장고에서 사용할 수 있도록 setting.py에 static_dir을 설정하고, 기존에 개발해 놓았던 front-end코드를 사용하여 메인화면(홈) template 개발을 진행했다.
* 주의할점 -> static_dir과 함께 media_root도 함께 설정해주어야 한다.
STATIC_URL = '/static/' # (추가) STATICFILES_DIRS STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')] MEDIA_URL = '/media/' # (추가) MEDIA MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
- TemplateView를 상속받는 MainPageView(제네릭 뷰) 생성
from django.views.generic.base import TemplateView class MainPageView(TemplateView): template_name = 'main.html'
- url 디자인
- home.html 개발
#메인 화면
#static폴더와 templates폴더
'프로젝트 > Yes Interior' 카테고리의 다른 글
heroku(무료 호스팅 서버) 설치 및 사용기 (0) | 2017.12.01 |
---|---|
연락하기 & 비전 페이지 완성 (프로젝트 완성도 99%) (0) | 2017.11.22 |
사용자 인증 & 견적보내기 기능 완성 (1) | 2017.11.15 |
Portfolio 기능 완성 _Django (0) | 2017.11.05 |
첫 홈페이지 개발하기 Start (4) | 2017.10.19 |
Comments