<오늘의 문제>
- 회원가입 함수 오류
- 내가 맡은 파트는 '게시글 작성'
- 그러려면 로그인이 되어 있어야 한다
- 포스트맨으로 회원가입부터 시도를 했는데 아래와 같은 오류가 나왔다
File "C:\Users\l\Desktop\project\02_project\SNS\user\views.py", line 40, in signup
login(request, user)
TypeError: login() takes 1 positional argument but 2 were given
- 대충 login 함수에는 1개만 매개변수로 들어가야 하는데 2개가 들어가서 그런 것 같다
- ctrl을 누른 채로 login 함수를 누르니까 매개변수로 request를 받게 되어 있어서 아래와 같이 수정했더니 회원가입이 잘 되고, 데이터베이스에도 잘 저장됐다!
login(request, user) -> login(request)
- 그런데 로그인 함수에도 문제가 있어서인지 로그인이 되지 않는다...
- 로그인 함수 오류
- 우리가 정의한 로그인함수명이 login이었는데 이게 장고 내장함수와 이름이 겹쳐서 재귀함수가 돼서 로그인이 안 되는 거였다
- 위에 회원가입도 같은 이유로 안 되는 거였다
- 로그인함수명을 login_view로 바꿨더니 로그인에 성공했고 회원가입 함수에 있던 로그인 함수는 내장함수를 사용하는 것이었기 때문에 매개변수 user를 다시 추가해주었다
- 게시글 작성 함수 오류
@login_required(login_url='')
def write_post(request):
"""게시글을 작성하는 함수"""
if request.method == 'GET':
post_form = PostForm()
return HttpResponse('게시글 작성창')
elif request.method == 'POST':
post_form = PostForm(request.POST)
if post_form.is_valid():
write_post = post_form.save(commit=False)
write_post.author = request.user
write_post.save()
return HttpResponse('게시글 작성 완료')
- 함수가 잘못된 건 아닌 거 같은데 포스트맨으로 돌렸을 때 자꾸 오류가 났다 http 어쩌고였는데...
- 고민하고 구글링하고 좌절하다가 결국 기술매니저님을 찾아갔다
- 같이 코드를 살펴보는데 Post모델에 image가 blank=False로 되어있었다
- 근데 나는 포스트맨에 caption에만 내용을 적고 이미지는 파일을 올리지 않아서 그랬던 거였다
- 우리 사이트는 이미지가 필수는 아니기 때문에 black=True로 해주고 기술매니저님은 blank=True 하면 null도 True로 해준다고 하셔서 나도 그렇게 했다
class Post(TimeStamedModel):
author = models.ForeignKey(
user_model.User,
null=True,
on_delete=models.CASCADE,
related_name='post_author'
)
image = models.ImageField(blank=True, null=True)
caption = models.TextField(blank=False)
- 데이터베이스에 게시글 저장된 걸 확인했다!
<내일 목표>
- 팀프로젝트 필수구현을 내일 마무리 할 수 있을 것 같다
- 알고리즘 문제 ..풀 수 있을까...? 1문제라도 풀어보자 내일은!