728x90
이 포스팅은 "Django 한그릇뚝딱"의 Chapter4 내용을 실습하며 정리한 내용이다.
프로젝트 개요
- 액셀 계산 사이트 만들기
- 기능 구현
- 로그인 및 회원가입(이메일 인증 방식)
- 파일 업로드
- 업로드 된 엑셀 파일 계산
가상 환경 세팅 및 app 구성
1. 가상환경 세팅
- which python : python 위치 확인
$ which python
- virtualenv venv : 가상환경
$ virtualenv venv
- source venv/bin/activate : 가상환경 활성화
source venv/bin/activate
2. 라이브러리 설치
requirements.txt를 이용하여 필요한 라이브러리를 설치해준다.
- requirements.txt 생성 후 내용 작성(경로 : ExcelCalculator/)
django
openpyxl
pandas
jinja2
- 라이브러리 설치
$ pip install -r requirements.txt
3. 프로젝트 이름 설정
ExcelCalculate로 프로젝트 이름을 설정해준다.
- Django-admin startproject ExcelCalculate
4. 앱 등록
총 3개의 앱. main, sendEmail, calculate 을 만든다.
- python manage.py startapp 앱 이름
$ cd ExcelCalculate
$ python manage.py startapp main
$ python manage.py startapp sendEmail
$ python manage.py startapp calculate
5. HTML 파일 추가
저자의 깃허브에서 html 파일 다섯개를 다운로드 한후, 아래 경로에 붙여준다.
- main>templates>main>
6. urls.py 설정
sendEmail app, calculate app 은 각 앱의 urls.py에서 처리하도록 보내고,
아무런 일치 사항이 없는 경우 main app의 urls.py에서 처리하도록 설정한다.
- ExcelCalculate>ExcelCalculate>urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path("admin/", admin.site.urls),
path('email/', include('sendEmail.urls'), name="email"),
path('calculate/', include('calculate.urls'), name="calculate"),
path('', include('main.urls'), name="main"),
]
7. 각 앱의 urls.py 생성 후 설정
- sendEmail > urls.py
- sendEmail > views.py의 send 함수로 처리하도록 작성한다. (~/email/send)
from django.urls import path
from . import views
urlpatterns = [
path('send',views.send, name = "email_send"),
]
- calculate > urls.py
calculate > views.py 의 calculate 함수로 처리하도록 작성한다.
from django.urls import path
from . import views
urlpatterns = [
path('', views.calculate, name = "calculate_do"),
]
- main > urls.py
메인화면, 회원가입, 로그인, 인증코드 입력, 인증코드 확인, 결과확인 url을 처리한다.
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name="main_index"), #메인화면
path('signup', views.signup, name="main_signup"), #회원가입
path('signin', views.signin, name="main_signin"), #로그인
path('verifyCode', views.verifyCode, name="main_verifyCode"), #인증코드 입력
path('verify', views.verify, name="main_verify"), #인증 코드 확인
path('result', views.result, name="main_result"), # 결과화면
]
8. 각 앱의 views.py 설정
- main > views.py
from django.shortcuts import render, redirect
# Create your views here.
def index(request):
return render(request, "main/index.html")
def signup(request):
return render(request, "main/signup.html")
def signin(request):
return render(request, "main/signin.html")
def verifyCode(request):
return render(request, "main/verifyCode.html")
def verify(request):
return redirect("main:index") # 인증이 완료되면 메인 화면으로 보내줌
def result(request):
return render(request, "main/result.html")
- sendEmail > views.py
urls.py 에서 views.py에 연결해 준 함수 send 를 생성한다.
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
def send(receiverEmail, verifyCode):
return HttpResponse("sendEmail, send function!")
- calculate > views.py
urls.py 에서 views.py에 연결해 준 함수 calculate 을 생성한다.
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
def calculate(request):
return HttpResponse("calculate, calculate function!")
- main > views.py
urls.py에서 views.py로 연결해준 함수 index, signup, signin, verifyCode, verify, result를 생성한다.
from django.shortcuts import render, redirect
# Create your views here.
def index(request):
return render(request, "main/index.html")
def signup(request):
return render(request, "main/signup.html")
def signin(request):
return render(request, "main/signin.html")
def verifyCode(request):
return render(request, "main/verifyCode.html")
def verify(request):
return redirect("main:index") # 인증이 완료되면 메인 화면으로 보내줌
def result(request):
return render(request, "main/result.html")
9. 결과화면 출력 확인
runserver 커맨드를 실행하여 아래와 같이 결과화면이 잘 출력되는지 확인한다.
python manage.py runserver
- 메인화면 : https://127.0.0.1:8000/
- 로그인 화면 :https://127.0.0.1:8000/signin
- 회원가입 화면 : https://127.0.0.1:8000/signup
- 인증 이메일 화면 : https://127.0.0.1:8000/verifyCode
- 결과 화면 : https://127.0.0.1:8000/result
- 이메일 전송 화면 : https://127.0.0.1:8000/email/send
- 계산 화면 : https://127.0.0.1:8000/calculate
- 인증 화면 :https://127.0.0.1:8000/verify (메인화면으로 돌아가야 함)
'Web > Django' 카테고리의 다른 글
[Web] ExcelCalculate with django for Mac - 3 (0) | 2023.08.01 |
---|---|
[Web] ExcelCalculate with django for Mac - 2 (0) | 2023.07.31 |
[Web] django로 Todolist 만들기 for Mac - 4 (0) | 2023.07.28 |
[Web] django로 Todolist 만들기 for Mac - 3 (0) | 2023.07.28 |
[Web] django로 Todolist 만들기 for Mac - 2 (0) | 2023.07.28 |