๐ ๋์ฅ๊ณ ์ ๋ํ ๊ธฐ์ด์ ์ธ ๋ด์ฉ์ ๋ค๋ฅธ ํฌ์คํ ์ ์ฐธ๊ณ !(๊ธ ์ ์ผ ํ๋จ์ ์ ๋ฆฌํด๋์์ต๋๋ค)
django.contrib.auth, django-allauth์ ๋ํ ๋ด์ฉ์ ์ถํ ํฌ์คํ ์์ :)
1๏ธโฃ์ฌ์ ์ค๋น
1. ํด๋ ๋ง๋ค๊ธฐ
- mkdir {ํด๋ ์ด๋ฆ}
- example) mkdir django-coplate
- ๋์ฅ๊ณ ํ๋ก์ ํธ๋ฅผ ๋ง๋ค ๊ณต๊ฐ
2. ๊ฐ์ํ๊ฒฝ ๋ง๋ค๊ธฐ
- pyenv virtualenv {ํ์ด์ฌ ๋ฒ์ } {๊ฐ์ํ๊ฒฝ ์ด๋ฆ}
- example) pyenv virtualenv 3.9.10 django_coplate_env
- ์์ฑ ํ ์ค์น๋ python ๋ฒ์ ๋ฐ ํ๊ฒฝ ํ์ธ : pyenv versions
3. ๊ฐ์ํ๊ฒฝ ์ง์
- 1์์ ๋ง๋ค์ด์ค ํด๋๋ก ์ด๋ ํ ๋ช ๋ น์ด ์ ๋ ฅ
- pyenv local {๊ฐ์ํ๊ฒฝ ์ด๋ฆ}
- pyenv local django_coplate_env
4. ๋์ฅ๊ณ ์ค์น
- pip install django==2.2
5. ํ๋ก์ ํธ ์ ์
- django-admin startproject {ํ๋ก์ ํธ ์ด๋ฆ}
- django-admin startproject coplate_project
6. ์ฑ ์์ฑ
- python manage.py startapp {์์ฑํ App ์ด๋ฆ}
- python manage.py startapp coplate
- ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ์ settings.py ํ์ผ์ INSTALLED_APPS ๋ฆฌ์คํธ์ ์์ฑํ ์ฑ ์ถ๊ฐ
2๏ธโฃ ์ ์ ๋ชจ๋ธ ์ ์ํ๊ธฐ
1. ์ฑ ๋๋ ํ ๋ฆฌ์ models.py์ ์ ์ ๋ชจ๋ธ ์ ์
# models.py
from django.db import models
from django.contrib.auth.models import AbstractUser # ์ ์ ๋ชจ๋ธ
# Create your models here.
class User(AbstractUser):
pass
2. ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ์ settings.py ํ์ผ์ ์๋ ์ฝ๋ ์ถ๊ฐ : ํด๋น ํ๋ก์ ํธ ๋ด์์ ์ ์ ๋ชจ๋ธ๋ก ํด๋น ๋ชจ๋ธ์ ์ฌ์ฉํ๊ฒ ๋ค๊ณ ์๋ ค์ฃผ๋ ์๋ฏธ
## settings.py ํ์ผ ๋งจ ์๋์ ์ถ๊ฐ
# ์ ์ ๋ชจ๋ธ๋ก ํด๋น ๋ชจ๋ธ์ ์ฌ์ฉํ๊ฒ ๋ค๋ ์๋ฏธ
# AUTH_USER_MODEL = '{์ฑ ์ด๋ฆ}.User'
AUTH_USER_MODEL = 'coplate.User'
3. ๋ง์ด๊ทธ๋ ์ด์ ํ ์ ์ฅ(๋งค์ฐ ์ค์)
## ํฐ๋ฏธ๋ : ๋ง์ด๊ทธ๋ ์ด์
์์ฑ
python manage.py makemigrations
python manage.py migrate
3๏ธโฃ ์ ์ ๋ชจ๋ธ admin ํ์ด์ง ๋ฑ๋ก & superuser ์์ฑ
1. ์ ์ ๋ชจ๋ธ admin์ ๋ฑ๋ก : ์ ์ ๋ชจ๋ธ์ ํน์ด์ฌํญ์ผ๋ก, UserAdmin์ ๊ฐ์ด ์ธ์๋ก ์ฃผ์ด ๋ฑ๋กํด์ผํจ
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from .models import User
# Register your models here.
# ๋ชจ๋ธ์ ๊ฐ์ ธ์์ ์ธ์๋ก ๋ฃ์ด์ค๋ค
admin.site.register(User, UserAdmin)
2. superuser(๊ด๋ฆฌ์ ๊ณ์ ) ์์ฑ
## ํฐ๋ฏธ๋
python manage.py createsuperuser
4๏ธโฃ allauth set up
์๋ ๋ ํผ๋ฐ์ค์๋ ๊ธฐ์ ํด๋์์ง๋ง, django-allauthInstallation doumentation์์ ๋งค์ฐ ์น์ ํ๊ฒ ์ค๋ช ํด์ฃผ๊ณ ์์ผ๋ ์ฐธ๊ณ !
1. ํฐ๋ฏธ๋์์ ํจํค์ง ์ค์น
## ํฐ๋ฏธ๋
pip install django-allauth
2. settings.py ํ์ผ ์์
๐ INSTALLED_APPS ์์ : ์๋ฌ๊ฐ ๋๋ ๊ฒ์ ์๋์ง๋ง ์๋์ ์์๊ฐ ๊ด๋ก์ด๋ค(convention)
- Local apps : ๋ด๊ฐ ์์ฑํ ์ฑ
- Third party apps : ์ธ๋ถ์์ ๋์ด์จ ์ฑ
- Django apps : ๋์ฅ๊ณ ๋ด๋ถ์ ์ผ๋ก ์ ๊ณตํ๋ ์ฑ
๐ 'django.contrib.sites' : ์ด๋ค ๊ธฐ๋ฅ์ ์ฌ๋ฌ ์น์ฌ์ดํธ์์ ์ฌ์ฉํ๊ฒ ํด์ค๋ค
- ๋น์ทํ ์ปจํ ์ธ ๋ ๊ธฐ๋ฅ์ ๊ฐ์ง๊ณ ์๋ ์น์ฌ์ดํธ๊ฐ ์ฌ๋ฌ๊ฐ ํ์ํ ๋ ํ์ฉํ์ฌ ํ๋ก์ ํธ ํ๋๋ก ์ฌ๋ฌ ์น์ฌ์ดํธ ์ด์ ๊ฐ๋ฅ
- ์ฌ๊ธฐ์
SITE_ID
๊ฐ ๊ฐ๊ฐ์ ์น์ฌ์ดํธ์ ์์ด๋
๐ EAMIL_BACKEND
- allauth๊ฐ ์ ๊ณตํ๋ ์ด๋ฉ์ผ ์ธ์ฆ์ด๋ ๋น๋ฐ๋ฒํธ ์ฐพ๊ธฐ ๊ธฐ๋ฅ์ ํ์ฉํ๋ ค๋ฉด ์ด๋ฉ์ผ์ ๋ณด๋ผ ์ ์์ด์ผํ๋๋ฐ
- ์ด ๋, ์ด๋ฉ์ผ์ ์ด๋ป๊ฒ ๋ณด๋ผ์ง ์ค์ ํ๋ ์ฝ๋์
## settings.py
# 1)์ ์ ์ธ์ฆ ๋ก์ง์ ๋ด๋นํ๋ ์ปดํฌ๋ํธ๋ค ์ถ๊ฐ
AUTHENTICATION_BACKENDS = [
# Needed to login by username in Django admin, regardless of `allauth`
'django.contrib.auth.backends.ModelBackend',
# `allauth` specific authentication methods, such as login by e-mail
'allauth.account.auth_backends.AuthenticationBackend',
]
# 2)ํ์ํ ์ฑ ๋ณต์ฌํด์ ์ถ๊ฐ
INSTALLED_APPS = [
# 1. Local apps(๋ด๊ฐ ์์ฑํ ์ฑ)
'{app}'
# 2. Third party apps(๋์ด์จ ์ฑ)
'django.contrib.sites',
'allauth',
'allauth.account',
'allauth.socialaccount',
# 3. Django apps(๋์ฅ๊ณ ๊ธฐ๋ณธ ์ฑ)
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
# 3) ์๋ ๋ด์ฉ ์ ์
SITE_ID = 1
# Email settings
EMAIL_BACKEND = "django.core.mail.backends.console.EmailBackend"
## ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ์ urls.py์ ์๋ ๋ด์ฉ ์ถ๊ฐ
path('', include('allauth.urls'))
5๏ธโฃ ํ์ธ
๋์ฅ๊ณ ๊ฐ๋ฐ ์๋ฒ๋ฅผ ์คํํ๊ณ http://0.0.0.0:8000/login/, http://0.0.0.0:8000/admin/ ์ผ๋ก ์ ์ํ๋ฉด ์ ์ ์๋๋ค!
## ํฐ๋ฏธ๋
python manage.py runserver 0.0.0.0:8000
1. ๋ก๊ทธ์ธ ํ์ด์ง : http://0.0.0.0:8000/login/
2. ๊ด๋ฆฌ์ ํ์ด์ง : http://0.0.0.0:8000/admin/
์๊น ๋ง๋ superuser ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธํ๋ฉด ๋๋ค. GUI๋ก ํธํ๊ฒ ๊ด๋ฆฌํ ์ ์๋ค:)
๐ Reference
- codeit :Django ์น ๊ฐ๋ฐ ์์ํ๊ธฐ
- django-allauth Installation doumentation
- [Django & ๊ฐ์ํ๊ฒฝ] pyenv ๋ช ๋ น์ด ๋ชจ์ ๋ฐ ๊ฐ๋ ์ ๋ฆฌ (๋ด ๋ธ๋ก๊ทธ)
- [Django] Project์ App ๊ตฌ์กฐ & Reusable App (๋ด ๋ธ๋ก๊ทธ)
'๐ฉ๐ปโ๐ป Programming > programming' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[React] mac ๊ฐ๋ฐํ๊ฒฝ ์ธํ : node.js, npm ์ค์น (0) | 2022.05.06 |
---|---|
[Django] Project์ App ๊ตฌ์กฐ & Reusable App (1) | 2022.04.29 |
[Django & ๊ฐ์ํ๊ฒฝ] pyenv ๋ช ๋ น์ด ๋ชจ์ ๋ฐ ๊ฐ๋ ์ ๋ฆฌ (0) | 2022.04.27 |
[Django & ๊ฐ์ํ๊ฒฝ] pyenv ์ค์น ๋ฐ ํ๊ฒฝ ์ค์ (feat.mac M1) (0) | 2022.04.26 |
[๋ง์ธ๋๋งต ์๊ฐํ ํด ์ถ์ฒ] ์ฝ๊ธ(coggle) (2) | 2021.12.30 |