Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 정리
- HADOOP
- redshift
- AWS
- 운영체제
- 종류
- Django
- TCP
- TIL
- PYTHON
- 데이터 파이프라인
- 파이썬
- sql
- 데브코스
- S3
- airflow
- 데이터엔지니어링
- 자료구조
- airflow.cfg
- dockerfile
- 데이터베이스
- Go
- 컴퓨터 네트워크
- linux
- http
- 데이터 웨어하우스
- Docker
- 데이터 엔지니어링
- 컴퓨터네트워크
- 가상환경
Archives
- Today
- Total
홍카나의 공부방
[DE 데브코스] 04.27 TIL - Django: User와 Authentication, Git의 기능 본문
Data Engineering/프로그래머스 데브코스
[DE 데브코스] 04.27 TIL - Django: User와 Authentication, Git의 기능
홍문관카페나무 2023. 4. 27. 19:35User
- Django의 Settings.py에 있는 django.contrib.admin과 django.contrib.auth 덕분에 기본적인 운영자 생성,인증 과정이 가능했다.
- shell에서 이를 더 자세히 살펴볼 수 있다.
- 위와 같은 'User'를 사용자가 임의로 만든 app에서도 사용할 수 있도록 model에 추가할 수 있다. 다음은 특정 app의 models.py 코드 예시다.
from django.db import models
from time import timezone
from datetime import timedelta
# Create your models here.
class Question(models.Model):
question_text = models.CharField(max_length=200, verbose_name="질문")
pub_date = models.DateTimeField(auto_now_add=True, verbose_name="생성일")
owner = models.ForeignKey(
'auth.User', related_name='questions', on_delete=models.CASCADE, null=True)
def __str__(self):
return f'제목: {self.question_text}, 날짜:{self.pub_date}'
class Choice(models.Model):
question = models.ForeignKey(
Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=32)
votes = models.IntegerField(default=0)
def __str__(self):
return f'[{self.question.question_text}]{self.choice_text}'
- 여기서 참고할 점은 ForeignKey로 지정한 필드의 related_name 속성이 추가되었다는 것이다. 해당 속성이 존재한다면, 역참조로 해당 모델을 불러올 때 related_name을 이용해서 불러와야 한다.
- 외래키 필드에 related_name이 존재하지 않는다면, 그냥 {model_name}_set 형태의 역참조 코드를 사용하면 된다.
User 관리하기
- REST Framework의 PrimaryKeyRelatedField를 이용하여 Serializer를 만들 수 있다.
- 아래의 PrimaryKeyRelatedField는, User 모델의 Primary Key 값으로 연결된 모든 Question 모델의 오브젝트들을 가져오는 코드다.
from rest_framework import serializers
from polls.models import Question, Choice
from django.contrib.auth.models import User
class QuestionSerializer(serializers.ModelSerializer):
class Meta:
model = Question
fields = ['id', 'question_text', 'pub_date']
class UserSerializer(serializers.ModelSerializer):
questions = serializers.PrimaryKeyRelatedField(
many=True, queryset=Question.objects.all())
class Meta:
model = User
fields = ['id', 'username', 'questions']
User 가입하기
- Django에 내장되어 있는 UserCreationForm을 이용하여 손쉽게 사용자 회원가입 폼을 만들수 있다.
- 회원가입 성공 이후에는 user-list 뷰로 리디렉션하여 새로 생성된 유저가 리스트에 포함되어 있는지 확인할 수 있다.
from django.views import generic
from django.urls import reverse_lazy
from django.contrib.auth.forms import UserCreationForm
class SignupView(generic.CreateView):
form_class = UserCreationForm
success_url = reverse_lazy('user-list')
template_name = 'registration/signup.html'
GIT
- Git은 분산환경을 지원하는 소스 버전 컨트롤 시스템이다.
- CVS, SVN은 호스트가 항상 서버에 연결되어 있다는 전제하에서 사용 가능한 중앙 개발형 시스템이었는데,
- Git은 위 두 솔루션에 비해 현저하게 빠르고, 오프라인에서도 작업이 가능하다는 장점이 있다.
- 또한 공동 개발, 백업, 코드 리뷰 등이 가능하다는 점도 장점이다.
GIT의 기능과 용어
- init, clone, remote, add, commit, push, pull, merge, branch, checkout 등의 기본 기능을 숙지하여야 한다.
- Repo : Repository의 줄임말로, Git으로 관리되는 SW 프로젝트를 지칭한다.
- Main(Master) : 한 Repo에서 기본이 되는 메인 코드를 지칭한다. 보통은
- Branch : 한 Repo에서 코드 작업본 단위를 지칭한다. 새로운 기능 개발을 위해 Main 혹은 다른 Branch로부터 새로운 Branch를 만들기도 하며, 작업 후에는 원본 Branch와 다시 병합(Merge)하려는 목적으로 만들어진다.
- Clone : 다른 계정에 존재하는 repo로부터 새로운 Local Repository를 만드는 것이다.
- Commit : 내가 만든 코드 변경을 Branch의 Local Repository에 반영하는 것이다.
- Pull : Main과 같은 원격 레포의 특정 브랜치로부터 변경된 것을 가져오는 작업이다. (쉽게 말하면 동기화하는 것.)
- Push : 로컬 레포에서 원격 레포로 변경사항들을 복사하여 동기화하는 것을 지칭한다.
- Merge : Pull이나 Push 중에서 두 브랜치 간의 충돌을 해결하는 과정이다.
- PULL REQUEST : 여기서 Pull은 사용자 관점에서 서버의 코드를 가져오는 게 아니라, 서버의 관점에서 Pull을 한다는 것이다. user가 만든 코드 변경안을 원격 레포로 pull을 해달라는 것이다.
반응형
'Data Engineering > 프로그래머스 데브코스' 카테고리의 다른 글
[DE 데브코스] 05.08 TIL - SQL과 RDBMS (0) | 2023.05.08 |
---|---|
[DE 데브코스] 05.05 TIL - 프로젝트, 네트워크, 데이터 개념 정리 (3) | 2023.05.05 |
[DE 데브코스] 04.26 TIL - Serializer (0) | 2023.04.26 |
[DE 데브코스] 04.25 TIL - Django 템플릿 & 뷰 (2) | 2023.04.25 |
[DE 데브코스] 04.24 TIL - Django 기초 (0) | 2023.04.24 |