오늘 한 것
[O] : feed 기능 완성하기!
+ file imgfield
+ tag 게시글에 추가하기. many!
+ 인기 순 혹은 관련된 게시글 목록 가져오기
[X] : 필수 요구사항 체크하여 db 등 기능 알아보기
[X] : JScrud 배우기
기능 구현
1. ImageField
FileField를 상속받아 이미지를 관리하는 field
pip3 install pillow #필수!
- static : 정적인 내부 파일을 가지고 있는 폴더 = logo, default image 등
- media : 동적인 파일을 저장하는 폴더 = 사용자가 등록한 자료
#settings.py
STATIC_URL = '/static/'
STATICFILES_DIRS = [os.path.join(BASE_DIR,'static')] # 개발단계
# STATIC_ROOT = os.path.join(BASE_DIR,'static') # 배포단계
MEDIA_URL = '/static/media/'
MEDIA_ROOT = os.path.join(BASE_DIR,'static/media')
manage.py 와 같은 위치에 폴더 만들기
# models.py
class Feed():
...
image = models.ImageField(blank=True, upload_to="media/photo/%Y/%m/%d",
default='static/default_image.png')
video = models.FileField(null=True, blank=)
...
upload_to 경로 지정
기본 상대 경로는 media/
이후 폴더 아래에 저장 photo/%Y/%m/%d (연/월/일)
default 기본 이미지 지정
- 배포할 때는 sqlite말고 다른 DB를 사용 (sqlite는 개발용 경량 db)
- mysql 등의 db에 따로 넣고 각각 배포해야한다
자주쓰는 DB :
- mysql
- mariaDB
- postgresql
- AWS : RDS
기본 정보 :
배포 서버 / 포트 / 접속 정보
…
django 의 settings.py에 static. media로 image넣기
static 자원으로 접근할때 url을 사용
...
장고 - 서버db끼리의 주고받는 과정
컨테이너를 각각 가지고 있고 각각을 배포하며, 서로 주고받음

2. 게시글에 tag만들기
users.models.py에 있는 Tag 모델
class Tag(models.Model):
name = models.CharField(max_length=32, verbose_name="태그명")
def __str__(self):
return self.name
serializers / view 내용
class TagSerializer(serializers.ModelSerializer):
class Meta:
model = Tag
fields = ['name', 'id']
def __str__(self):
return self.name
class TagView(APIView):
def get(self, request):
tags = Tag.objects.all()
serializer = TagSerializer(tags, many=True)
return Response(serializer.data)
팀원분이 만들어놓으신 model을 받아와서 ManyToMany로 추가한다
필수 영역으로 blank=False를 넣어 필수 입력 필드로 만들어주었다
class Feed():
...
tag = models.ManyToManyField('users.Tag', verbose_name = "tag", blank=False)
* postman으로 시험
tag는 출력될시에는 __str__ = self.name
Post 시에는 tag_id(pk값)가 들어간 list를 받아옴


list로 넣어주면 잘 작동!

[참조] :
https://pythonblog.co.kr/blog/68/
https://iamthejiheee.tistory.com/63
3. 이메일로 검증하는 절차 만들기 = 튜터님 설명 저장
default=False
model에 default를 False로 해두고, 유효성 검사한 결과가 유효하면 True로 바꾸어주는 부분!
1. (유저) 아이디, 이메일, 패스워드를 입력한다
2.(개발자) 아이디, 이메일, 패스워드 유효성을 확인한다
- 아이디 글자수 제한
-이메일 유효성 (정규식)
- 패스워드는 password_1, password_2 두개 필드에서 받은 값을 서로 비교
3. (개발자) 유효성을 확인한 뒤 백엔드 서버로 유저 테이블 데이터 입력 & 이메일 발송 요청을 한다.
4. (유저) 인증 이메일을 확인하여 클릭한다.
5. (서버) 유저 링크를 통해 백엔드 호출하여 기존에 유저 로그인 유효성 여부 (defalut=False) 였던 필드가 True로 바뀐다
5번의 페이지는 UI가 없이 유저가 클릭(호출할 시) 백엔드를 바로 호출하여 검증하고 유효성에 대한 결과값만 alert으로 띄워준다
6. (개발자) 유저가 로그인을 시도할 시 유저 로그인 유효성 여부 필드를 먼저 검증하고
이후 아이디와 패스워드를 검증하여 최종 로그인을 시킨다
⭐️내일 할 것⭐️
- JS CRUD를 공부하고 프로젝트에 적용하기
'AI 웹개발반' 카테고리의 다른 글
[TIL] 프론트에서 POST시 cors-headers 응답오류.. 해결완료 (0) | 2023.05.12 |
---|---|
[TIL] JS CRUD 공부 중... (0) | 2023.05.11 |
[TIL] 장고 permission (0) | 2023.05.04 |
[TIL] itertools. permutations, combinations 순열과 조합 (0) | 2023.05.03 |
[python] 객체 지향 특강 + homework (0) | 2023.05.01 |