패스트캠퍼스 파이썬 웹개발 올인원 패키지 후기(30)
파이썬 웹개발 올인원 패키지 30 일차 후기 겸 학습기록 입니다.
지난 시간에는 Django model class를 이용하여 fcuser라는 모델클래스를 생성하고 makemigrations와 migrate 명령어로 sqlite db에 반영까지하고, Django Admin app을 통해 admin 페이지에서 해당 테이블(모델클래스)에서 데이터를 입력해보았는데요,
오늘은 해당 Model을 가지고 회원가입 기능을 구현해 보겠습니다. Django MTV 패턴에서 T(Template)와 V(View)에 해당하는 부분입니다.
MTV의 T,V 만들기 - 회원 가입(1)

회원가입 Template 만들기
fcuser/template/register.html
<html>
<head>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous">
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js" integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" crossorigin="anonymous"></script>
</head>
<body>
<div class="cotainer">
<div class="row mt-5">
<div class="col-12 text-center">
<h1>회원가입</h1>
</div>
</div>
<div class="row mt-5">
<div class="col-12">
<form>
<div class="form-group">
<label for="exampleInputEmail1">Email address</label>
<input type="email" class="form-control" id="exampleInputEmail1" aria-describedby="emailHelp">
<small id="emailHelp" class="form-text text-muted">We'll never share your email with anyone else.</small>
</div>
<div class="form-group">
<label for="exampleInputPassword1">Password</label>
<input type="password" class="form-control" id="exampleInputPassword1">
</div>
<div class="form-group form-check">
<input type="checkbox" class="form-check-input" id="exampleCheck1">
<label class="form-check-label" for="exampleCheck1">Check me out</label>
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
</div>
</div>
</div>
</body>
</html>
fcuser/views.py
from django.shortcuts import render
def register(request):
return render(request, "register.html")
fc_community/urls.py
"""fc_community URL Configuration
The `urlpatterns` list routes URLs to views. For more information please see:
https://docs.djangoproject.com/en/3.0/topics/http/urls/
Examples:
Function views
1. Add an import: from my_app import views
2. Add a URL to urlpatterns: path('', views.home, name='home')
Class-based views
1. Add an import: from other_app.views import Home
2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
Including another URLconf
1. Import the include() function: from django.urls import include, path
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('fcuser/', include('fcuser.urls')),
]
fcuser/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('register/', views.register),
]
MTV의 T,V 만들기 - 회원 가입(2)

회원가입 Template 커스터마이징(부트스트랩)
fcuser/template/register.html 중 일부(form 부분 수정)
<form method="POST" action=".">
{% csrf_token %}
<div class="form-group">
<label for="username">사용자 이름</label>
<input type="text" class="form-control" id="username" placeholder='사용자이름' name="username">
</div>
<div class="form-group">
<label for="password">비밀번호</label>
<input type="password" class="form-control" id="password" placeholder="비밀번호" name="password">
</div>
<div class="form-group form-check">
<label for="re-password">비밀번호 확인</label>
<input type="password" class="form-control" id="re-password" placeholder="비밀번호 확인" name="re-password">
</div>
<button type="submit" class="btn btn-primary">등록</button>
</form>
MTV의 T,V 만들기 - 회원 가입(3)

회원가입 View 로직 만들기(비즈니스로직)
fcuser/views.py
from django.http import HttpResponse
from django.shortcuts import render
from django.contrib.auth.hashers import make_password
from .models import Fcuser
def register(request):
if request.method == 'GET':
return render(request, "register.html")
elif request.method == 'POST':
username = request.POST.get('username', None)
password = request.POST.get('password', None)
re_password = request.POST.get('re-password', None)
res_data = {}
if not (username and password and re_password):
res_data['error'] = '모든 값을 입력해야 합니다.'
elif password != re_password:
res_data['error'] = "비밀번호가 다릅니다."
else:
fcuser = Fcuser(
username=username,
password=make_password(password)
)
fcuser.save()
return render(request, 'register.html', res_data)
패스트캠퍼스 파이썬 인강 자세한 내용은 아래 링크를 참고해 주세요!
'Django Basics' 카테고리의 다른 글
| [패스트캠퍼스 수강 후기] 파이썬 인강 자기계발 챌린지 32 회차 미션 (0) | 2020.06.25 |
|---|---|
| [패스트캠퍼스 수강 후기] 파이썬 인강 자기계발 챌린지 31 회차 미션 (0) | 2020.06.24 |
| [패스트캠퍼스 수강 후기] 파이썬 인강 자기계발 챌린지 29 회차 미션 (0) | 2020.06.22 |
| [패스트캠퍼스 수강 후기] 파이썬 인강 자기계발 챌린지 28 회차 미션 (0) | 2020.06.21 |
| [패스트캠퍼스 수강 후기] 파이썬 인강 자기계발 챌린지 27 회차 미션 (0) | 2020.06.20 |