반응형

Development Environment : python 3.7, Windows 10

1. Virtual Environment Settings

 - pip 를 통해 패키지를 설치 할 경우  global 폴더 (Windows 10 기준 설치경로\\Lib\\site-packages)에 설치된다. 그런데 하나의 서버에서 서로 다른 프로젝트를 작업 중 패키지 설치를 난무(?) 할 경우 이미 패키지가 사용 중이던 프로젝트가 비정상적으로 동작 할 수 있다. 따라서 프로젝트 별 패키지를 관리하기 위해 virtualenv (Virtual Environment) 를 사용한다. (말그대로 개발했던 환경을 그대로 유지하기 위함)

 1) 가상환경 만들기 (python -m venv [폴더명])

C:\Users\User\pythonWorks>python -m venv kvenv

 1) 가상환경 사용하기 (activate)

C:\Users\User\pythonWorks\kvenv\Scripts>activate

(kvenv) C:\Users\User\pythonWorks\kvenv\Scripts>

2. Django 설치 (pip install django~=2.0.0)

(kvenv) C:\Users\User\pythonWorks\kvenv>python -m pip install --upgrade pip

(kvenv) C:\Users\User\pythonWorks\kvenv>pip install django~=2.0.0

3. Django 프로젝트 생성 (django-admin startproject [프로젝트명] [경로])

(kvenv) C:\Users\User\pythonWorks\kvenv>django-admin startproject kblog

 * 아래와 같이 생성됩니다. 이름이나 위치를 변경해서는 안됩니다.

kblog

├───manage.py
└───mysite
                settings.py
                urls.py
                wsgi.py
                __init__.py

4. pycharm 설치 (기본 IDLE 사용해도 무관)

https://www.jetbrains.com/pycharm/download/#section=windows

5. Timezone 및 언어 변경 (기존 UTC에서 timezone을 Asia/Seoul로 변경, en-us에서 ko로 변경)

settings.py

LANGUAGE_CODE = 'ko'

TIME_ZONE = 'Asia/Seoul'

6. Database 설정 (기본 설정이 sqlite3 로 되어있음, 그대로 사용)

settings.py

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

7. sqlite3 migration (python manage.py migrate)

C:\Users\User\pythonWorks\kvenv\kblog>python manage.py migrate

8. 서버 구동하기 (python manage.py runserver)

C:\Users\User\pythonWorks\kvenv\kblog>python manage.py runserver

9. 애플리케이션 만들기 (python manage.py startapp blog

(kvenv) C:\Users\User\pythonWorks\kvenv\kblog>python manage.py startapp blog

 1) kblog 서버에 blog 앱 등록하기

settings.py

INSTALLED_APPS = [ 
    blog, 
]

10. django.contrib.auth 사용하기 (기본 설치되어있음)

settings.py

INSTALLED_APPS = [
    'django.contrib.auth',
]

 1) auth url 추가

* 기본 제공 URL accounts/login/ [name='login']
accounts/logout/ [name='logout']
accounts/password_change/ [name='password_change']
accounts/password_change/done/ [name='password_change_done']
accounts/password_reset/ [name='password_reset']
accounts/password_reset/done/ [name='password_reset_done']
accounts/reset/<uidb64>/<token>/ [name='password_reset_confirm']
accounts/reset/done/ [name='password_reset_complete']

urls.py

from django.conf.urls import include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('accounts/', include('django.contrib.auth.urls')),
]

 2) login 페이지 생성 및 연결

*django.contrib.auth 는 기본적으로 app/template/registration 폴더를 찾음

* templates/registration/login.html 생성 (하위 폴더도 모두 생성)

(kvenv) C:\Users\User\pythonWorks\kvenv\kblog\blog\templates

(kvenv) C:\Users\User\pythonWorks\kvenv\kblog\blog\templates\registration

(kvenv) C:\Users\User\pythonWorks\kvenv\kblog\blog\templates\registration\login.html

 3) login.html 작성

login.html

<h2>Login</h2> <form method="post"> {% csrf_token %} {{ form.as_p }} <button type="submit">Login</button> </form>

 4) template 폴더 등록 및 리다이렉션 설정

settings.py

TEMPLATES = [ { ... 'DIRS': [os.path.join(BASE_DIR, 'templates')], ... }, ]

LOGIN_REDIRECT_URL = '/'

 5) 접속 확인

http://127.0.0.1:8000/accounts/login/

 6) 슈퍼계정만들기 (manage.py shell 사용하기)

(kvenv) C:\Users\User\pythonWorks\kvenv\kblog>python manage.py createsuperuser
Username (leave blank to use 'user'): cbkim
Email address: cheongbinkim@gmail.com
Password:
Password (again):
Superuser created successfully.

 7) 로그인 후 '/' 로 리다이렉션되는지 확인

 

$ python manage.py shell >>> from django.contrib.auth.models import User >>> user = User.objects.create_user('chiken1', 'chiken1@out.org', 'pass5678') >>> user = User.objects.create_user(username = 'test1', email = 'na@na.com', password = '1234') >>> User.objects.all() # 전체 User 리스트 확인

반응형
Posted by kev1n
,