[summary]
- 앨범사진 저장할때 확장자 지정해주는 방법
- 앨범사진이 있을 경우, 삭제하고 업데이트
[부족한 부분]
- decorator
- template - built-in
-
form - built-in fields
질문
- BytesIO클래스에서 seek메소드는 어떤 일을 수행하나요?
- seek 의 경우 바이트의 위치를 알려줌
- File() 이 경우, 파일 바이너리 위치가 끝이어도 처음부터 읽어서 동작
- crawler.artist.py의 ArtistData
1)일부 인스턴스 속성중 “_ (언더바)” 를 붙인 이유는 무엇인가요?- 외부에서 직접 접근을 하지 않아도 되기 때문에
2) “@require_detail” 은 무엇이며, 어떤 작업을 수행하나요? - 클래스 처음엔 get_detail이 false고 만약 True 이면 동작하지 않음
- decorator: 기존 함수에 다른 기능을 추가할 때
- 외부에서 직접 접근을 하지 않아도 되기 때문에
def abc(self,arg):
return argument
decorated_function_abc = require_detail(abc)
decorated_function_abc("adf")
session / token
- 서버에서 session() 브라우저에서 cookie
FileField
- 문자열로만 들어감
- Storage.save() AWS같이 다른 곳에 저장할때 사용할 수 있음
유저 확장(혼자 공부할 땐 다 봐야함)
https://docs.djangoproject.com/en/2.0/topics/auth/customizing/
- 다른 인증 방법을 사용할 때
- 유저 확장은 기본 장고가 제공한 유저 유지하면서 확장
Extending the existing User model
- 추가 정보의 경우 one-to-one 으로 연결
Substituting a custom User model
- 기본 제공하는 가지고 대체하는 방법과 제공하는 것을 사용하지 않는 방법이 있다. 그러나 기본 제공하는 모델을 사용해서 대체하는 것을 추천
# 기존 장고가 제공하는 앱을 이용해서 하는 것을 추천
AUTH_USER_MODEL = 'myapp.MyUser'
Using a custom user model when starting a project
- abstractuser(abstractbseuser) : 그래서 이걸 사용하는 것을 추천
- abstractbseuser : 뼈대만 있는 것 그래서 처음부터 만들어야 함. / 어려운 부분 패스워드 해싱 부분
# 확장 가능성을 생각해 두고 ~~!!
# 나중에 커스터마이징 하는 것이 편리함
from django.contrib.auth.models import AbstractUser
class User(AbstractUser):
pass
Referencing the User model
django.conf import settings setting 사용시, 메모리에 아직 올라가기 전에 사용해서 문제가 있는 경우가 있기때문에, conf에 있는 settings를 사용하자.
admin 유저 추가 오류
- admin에서 새로운 유저를 추가하면 비밀번호때문에 오류가 생긴 것임 > 패스워드를 해싱하지 않아서..
# members/admin.py
# 패스워드 해싱되서 바뀜
admin.site.register(User, UserAdmin)
Extending Django’s default User
- 추천하는 방법
- 이메일 로그인 방법중에, username에 이메일 계정 넣어도 됨 혹은 username/ email 필드 두개를 만드는 것도 좋음
password
https://docs.djangoproject.com/en/2.0/topics/auth/passwords/
How Django stores passwords
-
<algorithm>$<iterations>$<salt>$<hash>
salt 임의의 값 -
password 의 조건도 커스터마이징 가능
cleaned data
validation
https://docs.djangoproject.com/en/2.0/ref/forms/validation/