1.django 프레임웍 설치
$ git clone https://github.com/django/django.git
$ cd django
$ python setup.py install
$ python
>>> import django
>>> print django.get_version()
1.7
2. django 프로젝트 생성 및 설정
설치 후 생성된 django-admin.py를 프로젝트 생성을 원하는 폴더로 이동 후 프로젝트 생성
$ python django-admin.py startproject samplepro
프로젝트명을 samplepro로 하였다. 다음처럼 디렉토리가 구성된다.
samplepro/
manage.py
samplepro/
__init__.py
settings.py
urls.py
wsgi.py
생성된 프로젝트를 django 자체서버를 통해 테스트
$ cd samplepro
$ python manage.py runserver
Validating models...
0 errors found
Django version 1.7, using settings 'samplepro.settings'
Development server is running at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
웹 브라우져로 http://127.0.0.1:8000/ 에서 웹페이지를 확인
mysql을 사용하기 위한 python 인터페이스(MySql_python) 설치.
$ yum install mysql-devel
$ pip install mysql_python
프로젝트의 settings.py파일에 mysql 접속정보 입력
$ vi settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'DB명',
'USER': 'USER명',
'PASSWORD': '비밀번호',
'HOST': '127.0.0.1',
'PORT': '3306',
}
}
INSTALL_APPS
settings.py 파일을 보면 django 설치시에 기본적으로 설치된 프로그램이 표시된다.
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
)
django에 기본적으로 설치된 application을 사용하기 위해 데이터베이스 테이블을 사용할수 있게끔 설정이 필요
$ python manage.py syncdb
Creating tables ...
Creating table auth_permission
Creating table auth_group_permissions
Creating table auth_group
Creating table auth_user_user_permissions
Creating table auth_user_groups
Creating table auth_user
Creating table django_content_type
Creating table django_session
Creating table django_site
데이터베이스 테이블 생성이 완료되면 관리자 아이디/패스워드 설정을 한다.
You just installed Django's auth system, which means you don't have any superusers defined.
Would you like to create one now? (yes/no): yes
Username (leave blank to use 'root'):
E-mail address:
Password:
Password (again):
Superuser created successfully.
3. mod_wsgi를 이용한 apache 연동
가. 웹서비스를 위한 아파치와의 연동을 위해 아파치의 apxs를 이용하여 mod_wsgi를 설치
# cd /usr/local/src/mod_wsgi-3.3
# ./configure --with-apxs=/usr/local/httpd/bin/apxs --with-python=/usr/local/python2.7/bin/python
# make && make install
나. 프로젝트 디렉토리에 django.wsgi 파일 생성
import os
import sys
sys.path.append('/home/newsb/public_html/sb_community')
sys.path.append('/home/newsb/public_html')
#os.environ['PYTHON_EGG_CACHE'] = '/home/newsb/public_html/.python-egg'
os.environ['DJANGO_SETTINGS_MODULE'] = 'sb_community.settings'
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
# vi /usr/local/httpd/conf/httpd.conf
LoadModule wsgi_module modules/mod_wsgi.so
<VirtualHost *:80>
------------
WSGIScriptAlias / /home/newsb/public_html/sb_community/django.wsgi
<Directory /home/newsb/public_html/sb_community>
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
웹 접속확인.
4. django application 생성
$ python manage.py startapp sample_app
그 결과 다음과 같은 구조로 파일들이 생성된다.
samplepro/
manage.py
samplepro/
__init__.py
settings.py
urls.py
wsgi.py
sample_app/
__init__.py
models.py
tests.py
views.py
settings.py파일에 새로 생성한 application을 추가한다.
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'sample_app',
)
application의 models.py 파일을 열어 django의 ORM(Object Relational Mapping) 기능을 이용하여 실제 데이터베이스 테이블과 맵핑하기 위한 모델을 작성한다
$ vi models.py
from django.db import models
class CommBoard(models.Model):
subject = models.CharField(max_length=50, blank=True)
name = models.CharField(max_length=50, blank=True)
memo = models.CharField(max_length=200, blank=True)
hits = models.IntegerField(null=True, blank=True)
created_date = models.DateField(null=True, blank=True)
마이그레이션 작업내용을 만든다.
$ python manage.py makemigrations
Migrations for 'sample_app':
0001_initial.py:
- Create model CommBoard
마이그레이션 작업내용을 실행시켜 mysql 테이블을 생성시킨다.
$ python manage.py migrate
Operations to perform:
Apply all migrations: admin, contenttypes, board, auth, sessions
Running migrations:
Applying board.0001_initial... OK
댓글 없음:
댓글 쓰기