Size: 5800
Comment:
|
← Revision 32 as of 2012-08-17 10:51:31 ⇥
Size: 218
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 1: | Line 1: |
#acl falsetru:read,write,admin,revert 대안언어축제2006 BoF 세션 |
[[Django]]와 함께 EnglishStudy하기 |
Line 4: | Line 3: |
개괄적 설명은 http://altlang.org/fest/EnglishStudyWithDjango | http://gmp.biohackers.net |
Line 6: | Line 5: |
발표당일 공개할 내용들을 이곳에 정리 | 대안언어축제2006 BoF 세션 AltLang:EnglishStudyWithDjango |
Line 8: | Line 7: |
[[TableOfContents]] == 개요 == Django란? 고전적인 DB기반 웹어플리케이션 구축 1. 데이터베이스 설계 1. create db, table 1. list, detail, insert, update, delete programming with HTML, CSS, JavaScript Django에서는 1. Model 1. URL 1. View 1. 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> news_detail 추가 (링크만들고, 뷰) mp3_url embed. content, translation 추가 <r6> === difflib, Ajax를 이용한 받아쓰기 체크 === 자바스크립트로 content, translation 을 숨기기 <r7> 체크를 위한 자바스크립트 추가 {{{ function show_check_result() { if (req.readyState == 4) document.getElementById('check_result').innerHTML = req.responseText; } function check_dictation(check_url, answer_textarea) { answer = document.getElementById(answer_textarea); answer = escape(answer.value); try { req = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { req = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e2) { req = false; } } if (!req && typeof XMLHttpRequest != 'undefined') req = new XMLHttpRequest(); req.open("POST", check_url, true); req.onreadystatechange = show_check_result; req.send('answer=' + answer); } }}} 체크값이 화면에 표시되는가 확인 <r8> difflib 을 이용하여, 실제 체크 <r9> 휴식시간을 갖는다. 못 따라온 사람들을 위한 특훈 === key expression 테이블의 추가 === key expression 모델 구현 syncdb admin에서 입력 template에서 보여주기 <r10> === 웹디자인 적용 === 화면구상, 주메뉴구상 * news list * news random * 로그인 base.html 작성 <r11> 랜덤 출력기능 추가 <r12> === 로그인 기능 구현 === URL login/logout 을 추가 login.html 템플릿 추가 user 로그인상태에 따라 메뉴항목 변경 RequestContext로 context 수정 <r13> === 개인별 기록표 === check 시 기록을 남기도록. Record 모델이 필요하다. syncdb 실제 체크했을때 Record 생성 <r14> 레코드를 보여주기 <r15> == 기타 정보 == 서비스를 위해 추가로 해야할 일들 1. 데이터 입력 스크립트 1. mod_python 등을 이용한 서비스 http://biohackers.net/wiki/EnglishStudyWithDjango 에서 프로젝트가 계속 진행됩니다. 같이 참여하고 싶은 분들의 참가를 환영합니다. == 에필로그 == 청중들로 부터, 추가로 구현했으면 하는 아이디어를 접수 받는다. 쉽게 시연 가능한 것이라면, 그자리에서 바로 구현하여 보여주고, 그렇지 않은 경우, 해결방법을 제시한다. == 코멘트 == (코멘트를 남겨주세요) |
이후로도 프로젝트는 계속 진행됩니다. YongsLib:wiki/GmpStudy |
Django와 함께 EnglishStudy하기
대안언어축제2006 BoF 세션 EnglishStudyWithDjango
이후로도 프로젝트는 계속 진행됩니다. wiki/GmpStudy