대안언어축제2006 BoF 세션

개괄적 설명은 http://altlang.org/fest/EnglishStudyWithDjango

발표당일 공개할 내용들을 이곳에 정리

TableOfContents

개요

Django란?

고전적인 DB기반 웹어플리케이션 구축

  1. 데이터베이스 설계
  2. create db, table
  3. list, detail, insert, update, delete programming with HTML, CSS, JavaScript

Django에서는

  1. Model
  2. URL
  3. View
  4. 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>

  1. model (bigbigworld 만)
    • vi gmpstudy/models.py
    • ./manage.py syncdb
  2. shell 에서 몇가지 데이터 입력
    • ./manage.py shell
  3. url, include(..)
  4. view
  5. template
  6. 동작확인

MP3 파일의 추가

  1. model 수정
  2. 사용자 로그인 및 개인별 성적페이지

key expression 테이블의 추가

difflib, Ajax를 이용한 받아쓰기 체크

로그인 기능 구현

개인별 기록표

웹디자인 적용

기타 정보

서비스를 위해 추가로 해야할 일들

  1. 데이터 입력 스크립트
  2. mod_python 등을 이용한 서비스

http://biohackers.net/wiki/EnglishStudyWithDjango 에서 프로젝트가 계속 진행됩니다. 같이 참여하고 싶은 분들의 참가를 환영합니다.

에필로그

청중들로 부터, 추가로 구현했으면 하는 아이디어를 접수 받는다. 쉽게 시연 가능한 것이라면, 그자리에서 바로 구현하여 보여주고, 그렇지 않은 경우, 해결방법을 제시한다.

코멘트

(코멘트를 남겨주세요)

web biohackers.net