$ django-admin startapp 앱이름
settings.py의 INSTALLED_APPS에 앱 이름 추가
앱이름/models.py
python manage.py makemigrations
python manage.py migrate
앱이름/admin.py
from django.contrib import admin from .models import 클래스이름 # 같은 앱폴더 안에 있는 models.py에서 클래스 임포트 # Register your models here. admin.site.register(모델링한 요소들을 포함하는 클래스이름)
앱 안이나 밖에 templates 폴더 만들어서 그 안에 html파일 만들기
from django.urls import path, include
-> include 추가함
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('user.urls'))
]
-> path('', include('user.urls')) 추가함
-> user 앱의 urls.py에 연결시킨다는 뜻
from django.shortcuts import render
# Create your views here.
def sign_up_view(request):
return render(request, 'user/signup.html')
def sign_in_view(request):
return render(request, 'user/signin.html')
from django.urls import path
from . import views
# 같은 위치의 views.py를 임포트
urlpatterns = [
path('sign-up/', views.sign_up_view, name='sign-up'),
path('sign-in/', views.sign_in_view, name='sign-in'),
]
path('해당 페이지 url주소', views.views에서 작성한 render리턴하는 함수이름, name=해당 페이지 이름
http 요청 방식❓메서드
회원가입하는 페이지를 보여주는 url: sign-up
-> 보여주는 것이기 때문에 get 방식을 사용해서 페이지를 띄워주면 됨
if request.method == 'GET': #요청 방식이 get일 때 return render(request, 'user/signup.html') elif request.method == 'POST': # 요청 방식이 POST 일 경우
<form class="form-area" method="post" action="/sign-up/"> {% csrf_token %}
-> {% csrf_token %}는 요청방식이 post일때 보안을 위해 사용
<button type="submit" class="btn btn-primary">회원가입</button>
elif request.method == 'POST': username = request.POST.get('username', None) password = request.POST.get('password', None) password2 = request.POST.get('password2', None) bio = request.POST.get('bio', None) if password != password2: return render(request, 'user/signup.html') else: new_user = UserModel() new_user.username = username new_user.password = password new_user.bio = bio new_user.save() return redirect('/sign-in')
-> username, password, password2, bio의 기본값은 none
-> 두번째 if문에서 비밀번호가 다르면 회원가입 화면을 다시 띄워준다
-> 비밀번호가 같다면 models.py의 usermodel()로 db를 만들어 저장
-> 회원가입 완료시 로그인 페이지(/sign-in)로 이동(redirect)