대안언어축제2006 BoF 세션
개괄적 설명은 http://altlang.org/fest/EnglishStudyWithDjango
발표당일 공개할 내용들을 이곳에 정리
개요
Django란?
고전적인 DB기반 웹어플리케이션 구축
- 데이터베이스 설계
- create db, table
list, detail, insert, update, delete programming with HTML, CSS, JavaScript
Django에서는
- Model
- URL
- View
- Template
실습 진행
프로젝트, 사이트 생성
altlang 프로젝트(사이트)생성
C:\work>django-admin.py startproject altlang C:\work>cd altlang C:\work\altlang>dir /b manage.py settings.py urls.py __init__.py
eswd 어플리케이션생성
C:\work\altlang>django-admin.py startapp eswd C:\work\altlang>dir /b eswd models.py views.py __init__.py
Database 연결확인 (DB와 Django와 동기화)
C:\work\altlang>manage.py syncdb ... django.core.exceptions.ImproperlyConfigured: You haven't set the DATABASE_ENGINE setting yet. ...
<r0>
데이터베이스 설정
--- a/settings.py Wed Aug 30 16:14:44 2006 +0900 +++ b/settings.py Wed Aug 30 16:17:17 2006 +0900 -DATABASE_ENGINE = '' -DATABASE_NAME = '' +DATABASE_ENGINE = 'sqlite3' +DATABASE_NAME = r'c:\work\altlang\gmp.db' @@ -74,4 +74,6 @@ INSTALLED_APPS = ( 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', + 'django.contrib.admin', # for Admin interface + 'eswd', # Out English Study With Django App. )
Django 기본 DB 생성
C:\work\altlang>manage.py syncdb
<r1>
URL 설정 (전역)
--- a/urls.py Wed Aug 30 16:21:50 2006 +0900 +++ b/urls.py Wed Aug 30 16:35:30 2006 +0900 -# (r'^admin/', include('django.contrib.admin.urls')), + (r'^admin/', include('django.contrib.admin.urls')),
<r2>
모델링에서 동작확인까지
GMP 홈페이지 (http://www.kbs.co.kr/radio/coolfm/gmp/study/bbw/index.html)에서 뉴스 구조 확인
eswd/models.py
class News(models.Model): pub_date = models.DateField() content = models.TextField(maxlength=1000) translation = models.TextField(maxlength=1000) mp3_url = models.URLField()
syncdb 후 admin 페이지에서 확인. 이후, str 추가로 바뀌는 내용 확인
<r3>
urls.py 에 news_list 를 보여줄 URL 추가
eswd/views.py 에 news_list 를 보여줄 view 추가
<r4>
mkdir eswd/templates
eswd/templates/news_list.html 템플릿 추가
쉘에서 모델객체 확인
C:\work\altlang>manage.py shell >>> from eswd.models import News >>> News.objects.all() [<News: news on 2006-05-19>, <News: news on 2006-05-24>] >>> n = News.objects.get(id=1) >>> n <News: news on 2006-05-19> >>> n.pub_date datetime.date(2006, 5, 19) >>> n.content 'The US moved today to restore full diplomatic relations with Libya. The two countries have not had formal ties since 1980.' >>> n.mp3_url 'http://cgi.kbs.co.kr/bbs/ezboard.cgi?db=2Fgmpops5&action=down&dbf=1408&downfile=friday-re.mp3&/friday-re.mp3'
뷰에서 모델추가
<r5>
- model (bigbigworld 만)
- vi gmpstudy/models.py
- ./manage.py syncdb
- shell 에서 몇가지 데이터 입력
- ./manage.py shell
- url, include(..)
- view
- template
- 동작확인
MP3 파일의 추가
- model 수정
- 사용자 로그인 및 개인별 성적페이지
key expression 테이블의 추가
difflib, Ajax를 이용한 받아쓰기 체크
로그인 기능 구현
개인별 기록표
웹디자인 적용
기타 정보
서비스를 위해 추가로 해야할 일들
- 데이터 입력 스크립트
- mod_python 등을 이용한 서비스
http://biohackers.net/wiki/EnglishStudyWithDjango 에서 프로젝트가 계속 진행됩니다. 같이 참여하고 싶은 분들의 참가를 환영합니다.
에필로그
청중들로 부터, 추가로 구현했으면 하는 아이디어를 접수 받는다. 쉽게 시연 가능한 것이라면, 그자리에서 바로 구현하여 보여주고, 그렇지 않은 경우, 해결방법을 제시한다.
코멘트
(코멘트를 남겨주세요)