이제 블로그를 업그레이드 해봅시다. 첫번째로 로그인 기능을 구현할 겁니다. 현재 블로그는 아무나 들어와서 글쓰기를 누르면 글을 쓸 수 있습니다. 그런 상황을 원하고 만든 블로그가 아니니, 로그인 했을때만 글을 쓸수 있게 바꿔봅시다.

우리 프로젝트에 새로운 앱을 추가해봅시다.

새로운 app 만들기

Django를 이용해 여러 파일들을 다뤄보는 내용을 배워봅시다. 새로운 기능이니 새로운 app으로 만들 계획이고, 복습을 겸하려 합니다.

앱을 만들기 전에 가상환경 꼭 켜주세요.

app 만들기

python manage.py startapp accounts

그리고 settings.py에 설치된 app 목록에 accounts를 추가해줍니다. 이 과정을 아무 생각없이 기계적으로 하고 있는 여러분들이 자랑스럽습니다.

아래 전체를 복붙하지 마시고 꼭 accounts만 추가해주세요

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

		**'accounts' # 참고) 'accounts.apps.AccountsConfig',**
]

urls.py 만들기

accounts 앱 안에는 urls.py파일이 없습니다. 파일을 만들고, 앞서 앱에서 연결했던 것 처럼 연결해봅시다.

accounts/urls.py

from django.urls import path
from . import views

urlpatterns = [
    path('signup/', views.signup, name='signup'),
    path('login/', views.login, name='login'),
]

잘 기억이 안난다면 앞서 만들었던 app의 구조를 찬찬히 살펴보며 작성하면 됩니다.

이제 프로젝트의 urls.py로 가서 include로 연결해줍시다.

from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static
import app1.views

urlpatterns = [
    path('admin/', admin.site.urls),
		path('', app1.views.home, name='home'),
    path('app1/', include('app1.urls')),
    path('accounts/', include('accounts.urls')),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

template 만들기

login을 기능을 위해서는 총 2개의 페이지를 만들어 줘야합니다.