Open jinwoo71 opened 6 years ago
@jeuxdeau 우빈아, SignUp 백엔드 구현했어! frontend에서 backend로 signup 정보를 post할 때 아래의 양식에 맞춰서 post해주면 돼 테스트 해봤어! 이미 있는 username으로 signup 못하게도 해놨고 양식 잘못되어도 아마 에러날거야 POST URL은 localhost/users/ 로 보내면 돼!
회원가입시 프론트에서 백엔드로 post할 데이터 예시
{ "username": "post_test1", "password": "pbkdf2_sha256$100000$4z7u0s1klKMJ$L2Qb/jSUJ+EMijaV2roGjx1lBM3LZF8LgrZJVwfg/14=", "companion": { "name": "posttest1", "sex": "male", "age": 0, "breed": "labrador_retriever", "size": "medium", "desired_mate": { "breed": "beagle", "sex": "male", "size": "small" }, "personality": { "affinity_with_human": "one", "affinity_with_dog": "one", "shyness": "one", "activity": "one", "loudness": "one", "aggression": "one", "etc": "this_is_etc" }, "mating_season": { "season_start": "2018-05-11T07:34:16Z", "season_end": "2018-05-11T07:34:16Z" }, "like_sent": [], "like_received": [], "proposal_sent": [], "proposal_received": [], "message_sent": [], "message_received": [] }, "profile": { "nickname": "hhahahaha", "postal_code": 14600, "rough_address": "hh", "detailed_address": "hh", "age": 22, "gender": "male", "email": "email@snu.ac.kr" } }
정신없이 짜서 코드에 아직 주석들은 못적었어.. 조만간 채워둘게 @AirHorizons @SonSang @jeuxdeau 모두 의견 부탁드릴게요
Profile (**계획에 없던 것) 유저의 정보를 담는 모델을 새로 만들었어. 사실 유저 모델을 상속한 모델을 만들어도 될텐데, 찾아보니까 그러면 몇몇 문제들이 있는 것 같아서 User과 OneToOne 관계를 갖는 Profile 모델을 만들었어.
DesiredMate, Personality, MatingSeason Companion의 Field들인데 얘네는 구조체처럼 들고다니기로 해서 새로 모델을 만들어서 마찬가지로 Companion Model과 OneToOne 관계를 가지도록 구현했어.
Like, Proposal, Message Companion 모델이 여러 개의 Like, Proposal, Message 모델을 가질 수 있어서 ForeignKey를 이용해서 구현했어!
Companion User은 여러개의 Companion을 가질 수 있으니 마찬가지로 user과 foreignkey를 통해 연결해주었고, DesiredMate, Personality, MatingSeason와는 OneToOne 관계를 가지도록 구현했어
진우 넘 수고했어...!!@@ +) 전체적으로 다 괜찮은 것 같아!ㅎㅎ 그런데 백엔드 쪽에서 url설정할 때 /companions/가 아니라 /api/companions/처럼 프론트 / 백 구분짓기 쉽도록 api를 앞에다 다 붙여주면 좋을 것 같아ㅎㅎ
@SonSang 감사합니다! 그렇게 할게요!!!
@jeuxdeau 우빈아 조금 수정됐어 (birth_year과 personality) SIgnup Post 보낼 때 아래와 같은 양식으로 데이터 보내줘 url도 '/api/users/'로 바뀌었어
{ "username": "post_test1", "password": "pbkdf2_sha256$100000$4z7u0s1klKMJ$L2Qb/jSUJ+EMijaV2roGjx1lBM3LZF8LgrZJVwfg/14=", "companion": { "name": "posttest1", "sex": "male", "birth_year": 1995, "breed": "labrador_retriever", "size": "medium", "desired_mate": { "breed": "beagle", "sex": "male", "size": "small" }, "personality": { "affinity_with_human": 2, "affinity_with_dog": 3, "shyness": 4, "activity": 5, "loudness": 4, "aggression": 3, "etc": "this_is_etc" }, "mating_season": { "season_start": "2018-05-11T07:34:16Z", "season_end": "2018-05-11T07:34:16Z" }, "like_sent": [], "like_received": [], "proposal_sent": [], "proposal_received": [], "message_sent": [], "message_received": [] }, "profile": { "nickname": "post_test_닉네임", "postal_code": 14600, "rough_address": "test의", "detailed_address": "집입니다.", "age": 22, "gender": "male", "email": "email@snu.ac.kr" } }
먼저! 고생 많았다...
디테일하게는 사인업 하면서 볼텐데 대충 보기로는 멋지구... 궁금한 점은 두 가지로
@jeuxdeau
USer model 확장기법으로는 https://wikidocs.net/6651 이 페이지를 참고했는데, 솔직히 간단하게 설명만보고 Profile 나눠서 구현하는게 제일 간단하고 더 생각해야할 문제가 없는 것 같아서 그렇게 구현했어
나도 굉장히 맘에 안들어... DesiredMate, Personality, MatingSeason 모델로 구현안하고 다른 방식으로 구현할 수 있으면 다 갈아엎어버리고 그 방법을 택할 용의가 있어! 하지만 잘 모르겠고 일단 모델로 구현해도 작동은 하니까 구현은 해놨어...
우빈할일
Backend Model
Companion List & User List