반응형
스파르타 코딩클럽 내일배움캠프 AI 웹개발자양성과정 3회차
2022.10.11. 28일차 - TIL
1. Django 복습
- 가상 환경 생성
- 프로젝트 별 개발 환경 형성을 위한 독립된 개발 공간
- 폴더 생성 후 vscode로 folder open 후 다음 명령어 입력
1) venv라는 이름의 가상환경 만들기
$ python -m venv venv
2) 가상환경 활성화
$ venv\scripts\activate
3) 장고 패키지 설치
$ pip install django
4) requirements.txt 생성
$ pip freeze > requirements.txt
5) 장고 프로젝트 생성
$ django-admin startproject [프로젝트명] .
- GIT 연결하기
- gitignore 생성 후 venv 추가
- Git 저장소 생성 : 로컬 저장소로 사용할 폴더로 이동해 git init 입력
- Git 원격 저장소 연결 : 원격 저장소 생성 후 git remote add origin [원격저장소 주소] 입력
- master branch -> main branch로 이름 변경 : git branch -M main
- 인덱스에 파일 추가(Staging) : git add [파일명] or git add . -> commit 이전단계
- 변경사항 확정 : git commit -m [메시지내용]
- 원격 저장소로 push : git push <remote> <현재branch> - git default branch 이름 바꾸는 방법
1) git branch -m master main
2) git config --global init.defaultBranch main - Git fork : 다른 사람의 github repository를 내 github repository로 복제하는 것
- Git clone : 특정 repository를 내 로컬 저장소(컴퓨터)에 복사하는 것
- 추가 내용
> 새로운 브랜치 생성
$ git branch <브랜치명>
> 해당 브랜치로 이동
$ git checkout <브랜치명>
> 클론 받아오기
$ git clone <원격저장소 주소>
> 특정 commit 병합
$ git merge <commit 이름>
> 특정 branch 병합
$ git merge <branch 이름>
> 원격 저장소 fetch
$ git fetch <원격저장소 명칭 origin>
> 원격 저장소 pull
$ git pull <원격저장소 명칭 origin>
> requirements.txt로 설치
$ pip install -r requirements.txt
* pull : 원격 저장소의 소스를 가져와 해당 소스가 현재 내 소스보다 더 최신 버전일 경우 지금의 버전을 해당 소스에 맞춤 -> merge가 됨
* fetch : 단지 소스를 가져옴 -> merge를 하지 않음
2. 인스타 클론 코딩 복습
- 회원가입 기능
# user앱의 views.py
from django.shortcuts import render, redirect
from django.contrib.auth import get_user_model
from .models import User
def sign_up_view(request):
# get method일 때는 그냥 회원가입 페이지 보여주기
if request.method == 'GET':
return render(request, 'user/signup.html')
elif request.method == 'POST':
# html의 form 태그 내 input 태그의 name을 지칭해 값을 가져옴
useremail = request.POST.get('input_email', None)
username = request.POST.get('input_name', None)
usernickname = request.POST.get('input_nickname', None)
userpassword = request.POST.get('input_password', None)
userpassword2 = request.POST.get('input_password2', None)
# 비밀번호가 일치하지 않은 경우
if userpassword != userpassword2:
msg = '비밀번호가 일치하지 않습니다.'
# message가 안보임!! 더 찾아볼 것!!
return render(request, 'user/signup.html', {'message': msg})
else:
# 우리가 설정한 AUTH_USER_MODEL에서 email주소가 있는지 확인
exist_user = get_user_model().objects.filter(email=useremail)
# 사용자가 존재하는 경우
# 사용자를 저장하지 않고, 회원가입 페이지를 다시 띄움
if exist_user:
msg = '이미 존재하는 이메일입니다.'
return render(request, 'user/signup.html', {'message': msg})
else:
User 모델에 새로운 인스턴스 생성
User.objects.create_user(username=username, email = useremail, password=userpassword, user_nickname=usernickname, user_profile_image='default_profile.png')
return redirect('/user/sign-in') # 회원가입 완료 후 로그인 페이지로 이동
# user 앱의 urls.py
from django.urls import path
from . import views
urlpatterns = [
...생략...
path('sign-up/', views.sign_up_view, name='sign-up'),
...생략...
]
<!--signup.html-->
<form class="form-area" method="post" action="/user/sign-in">
{% csrf_token %}
... 생략 ...
<input type="email" class="form-control" style="font-size: 14px; height: 24px" id="input_email" name="input_email" placeholder="name@example.com">
... 생략 ...
</form>
- 로그인 기능
# user 앱의 views.py
from django.shortcuts import render, redirect
from django.contrib import auth
def sign_in_view(request):
if request.method == 'GET':
return render(request, 'user/signin.html')
elif request.method == 'POST':
useremail = request.POST.get('input_email', None)
userpassword = request.POST.get('input_password', None)
# 사용자 불러오기
me = auth.authenticate(request, email=useremail, password=userpassword)
# 저장된 사용자의 패스워드와 입력받은 패스워드 비교
if me is not None:
auth.login(request, me)
return redirect('/tweet/main')
else: # 로그인 실패 시
return redirect('/user/sign-in')
# user 앱의 urls.py
from django.urls import path
from . import views
urlpatterns = [
...생략...
path('sign-in/', views.sign_in_view, name='sign-in'),
...생략...
]
<!--signin.html-->
<form class="form-area" method="post" action="/user/sign-in">
{% csrf_token %}
...생략...
<input type="email" class="form-control" style="font-size: 14px; height: 24px" id="input_email" name="input_email" placeholder="name@example.com">
...생략...
</form>
Related
반응형
'개발일지 > AI 캠프' 카테고리의 다른 글
내일배움캠프 AI - 30일차 TIL, 2022.10.13 (0) | 2022.10.13 |
---|---|
내일배움캠프 AI - 29일차 TIL, 2022.10.12 (0) | 2022.10.13 |
내일배움캠프 AI - 6주차 WIL (0) | 2022.10.11 |
내일배움캠프 AI - 27일차 TIL, 2022.10.07 (0) | 2022.10.07 |
내일배움캠프 AI - 26일차 TIL, 2022.10.06 (0) | 2022.10.07 |