[컴][웹][파이썬] Django 시작하기 - Django 설치 및 프로젝트 설정

project setting for django / 장고 설치









Django install


f:\>c:\Python27\Scripts\pip.exe install Django==1.8.4
C:\Python27\lib\site-packages\pip\_vendor\requests\packages\urllib3\util\ssl_.py:90: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL conn
ections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.
  InsecurePlatformWarning
You are using pip version 7.0.1, however version 7.1.2 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
Collecting Django==1.8.4
C:\Python27\lib\site-packages\pip\_vendor\requests\packages\urllib3\util\ssl_.py
:90: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/la
test/security.html#insecureplatformwarning.
  InsecurePlatformWarning
  Downloading Django-1.8.4-py2.py3-none-any.whl (6.2MB)
    100% |################################| 6.2MB 72kB/s
Installing collected packages: Django
  Found existing installation: Django 1.5.11
    DEPRECATION: Uninstalling a distutils installed project (Django) has been deprecated and will be removed in a future version. This is due to the fact that uninstalling a distutils project will only partially uninstall the project.
    Uninstalling Django-1.5.11:
      Successfully uninstalled Django-1.5.11
Successfully installed Django-1.8.4

기존에 old version 이 설치되어 있으면 알아서 uninstall 을 하고 설치한다.


그러면 django-admin.py 이 아래 경로에 생긴다.

  • c:\Python27\Scripts\django-admin.py



startproject

source : https://github.com/i5on9i/django-template


d:\mine\programming\python\myproject>c:\Python27\Scripts\django-admin.py startproject myproject

ref. 1에서 cookiecutter-django를 소개하고 있다.



settings directory

ref. 1 의 5.2 절에서 settings 를 여러개 사용하는 경우를 위해서 아래처럼 settings folder 를 두는 방법을 이야기 해준다.
  • d:\mine\programming\python\myprojectroot\myproject\myproject\settings.py
에 있는 setting 을 아래처럼 settings folder 를 만들어서 옮겨놓자.
  • d:\mine\programming\python\myprojectroot\myproject\myproject\settings\


그러면 아래와 같은 방법으로 사용할 수 있다.(참고)
python manage.py runserver --settings=myproject.settings.local
django-admin runserver --settings=myproject.settings.local
그리고 ref. 2 에 따르면 settings 를 여러개 사용할 때는 manage.py 보다는 django-admin 을 사용하라고 한다. 이것은 manage.py 에서 기본적으로 settings 를 설정하기 때문인듯 하다.

하지만, django-admin 은 3.0 에서 settings module 를 제대로 찾지 못한다.(import_module 에서 문제가 발생한다.)  manage.py 는 잘 동작했다.

예제는 아래 링크를 확인하자.


Requirements directory

ref.1 에서 제한하는 방법중 하나가 requirement 를 txt 로 만들어 놓는 것이다.

여기에 pip install -r base.txt 처럼 각 setting 에서 필요로하는 module 의 정보를 적어놓는다.(virtualenv 에 설치한 모듈정보로 이해하면 될 듯 하다.) 이 정보는 pip freeze --local 을 통해 얻을 수 있다.


SECRET KEY 는 소스에서 빼자

SECRET_KEY 는 source repository 에서 빼내는 쪽으로 고려하도록 하자. ref.1 에서는 이것을 file 로 빼고, .gitingnore 에 추가했다. production.py 의 get_env_setting 함수를 참고하자.

startproject 를 하면 SECRET_KEY 가 settings.py 에 생성된다.


json 설정

json 을 이용한 설정은 아래 소스를 참고하자.


SECRET_KEY


diffsettings

diffsettings 를 통해 default setting 과의 현재 setting 과의 차이를 확인할 수 있다.
d:\...> django-admin diffsetings


psycopg2 설치

여기 를 참고하자.



DB 계정 setting

DB 관련 정보를 myproject.settings.local.py 에 설정해 주면 된다.
DATABASES = {
    # 'default': {
    #     'ENGINE': 'django.db.backends.sqlite3',
    #     'NAME': join(DJANGO_ROOT, 'db.sqlite3'),
    # }
    "default": {
        "ENGINE": "django.db.backends.postgresql_psycopg2",
        "NAME": "mydb",
        "USER": "test",
        "PASSWORD": "test",
        "HOST": "localhost",
        "PORT": "",
    }
}


PostgreSQL 에서 user 정보를 생성하는 방법은 여기를 참고하자.


Database Migration

위의 설정에서 정해준 db 는 postgreSQL 에 이미 만들어져 있어야 한다.
그리고 그 DB 에 USER (위에서는 'test') 가 접근할 수 있어야 한다.

(myproject) d:\mine\programming\python\...>manage.py makemigrations --settings=myproject.settings.local
No changes detected

이후에 migrate 을 하면 실제로 db table 을 만들어 준다.
(myproject) d:\...>manage.py migrate --settings=myproject.settings.local


이제 user table 까지 만들어진 것이다. user table 의 field 확장에 관해서는 2번째 글을 읽도록 하자.


Run

8080 port 로 서버를 띄워보자.
(myproject) d:\mine\programming\python\...>manage.py runserver --settings=myproject.settings.local 8080

아무것도 해놓지 않아서 아래처럼 뜰 것이다.


Reference

  1. Two scoops of Django Best practices for Django 1.8
  2. django-admin.py and manage.py | Django documentation | Django
  3. 쿠...sal: [컴][웹] 구글 앱 엔진 web app 대신에 Django 이용하기 5 - SECRET_KEY






댓글 없음:

댓글 쓰기