1.[Django - 팀프로젝트] 유저 정보 검색 기능
문제점
url에 추가 입력하는 방법 말고 html 내에서 해결 가능해야함
시도해 본 것들
# urls.py
path('mypage/<str:username>', views.user_info, name='user_info'),
# views.py
def user_info(request, username):
user_info = get_object_or_404(UserModel, username=username)
return render(request, 'user/user_info.html', {'user_info': user_info})
mypage/ 뒤에 직접 입력해서 결과가 나오는지 확인하고 이걸 기반으로 html을 작성했다.
form으로 post로 username을 전달하려고 함
<form action="{% url 'user:mypage' user_info=user_info %}" method="post"">
같은 식으로 input에 값을 전달 시도 <- user_info의 전달 방식을 바꿔봐도 해결방법을 못 찾음
사용하기 어려운 <str:username> 포기하고 html 에서 다시 시작
일단 get과 post중 검색이므로 url에서 값을 확인해도 괜찮음 <-get 방식 사용
<form class="form-area search_bar" method="get" action='{% url 'user:search_info' %}'>
html에서 action으로 url만 보내기
path('user_info/', views.search_info, name='search_info'),
urls.py 수정하기
def search_info(request):
# html 검색 입력값 가져 오기
search_user = request.GET.get('search_user')
user_info = get_object_or_404(UserModel, username=search_user)
postings = Posting.objects.filter(username=user_info)
return render(request, 'user/user_info.html', {'user_info': user_info, 'postings': postings})
매개변수로 입력 받는 게 아니라 request.GET.get('search_user')로 input값 가져오기
해결 방법
html
<form class="form-area search_bar" method="get" action='{% url 'user:search_info' %}'>
<div class=" form-group mt-2 mb-2">
<input type="text" class="form-control" placeholder="유저 검색" id="search_user" name="search_user">
</div>
</form>
urls.py
path('user_info/', views.search_info, name='search_info'),
views.py
def search_info(request):
try:
# html 검색 입력값 가져 오기
search_user = request.GET.get('search_user')
user_info = get_object_or_404(UserModel, username=search_user)
postings = Posting.objects.filter(username=user_info).order_by('-create_at')
return render(request, 'user/user_info.html', {'user_info': user_info, 'postings': postings})
# next로 페이지 돌아올 때도 search_user 정보가 없어서 에러 발생함
except Http404:
return HttpResponse(f"<script>alert('{search_user}은 존재하지 않는 유저입니다! or next로 돌아오면서 search_user값이 없어서 에러 발생');location.href='/main';</script>")
알게 된 점
내가 원하는 결과가 나온다고해서 그게 내가 생각하는 방식으로도 작동한다는 보장은 아니라는 것을 배웠다.
작성할 때 부터 이해가 안가는 코드는 내게 도움이 안된다. 공부도 안되고 제대로된 코드로 만들기도 힘들다.
작성하는 내가 이해 가능한 코드 -> 일주일 뒤의 내가 알아보는 코드-> 같이 협업하는 팀원이 알아보는 코드 -> 완성된 코드를 유지 보수해야 하는 사람이 알아보는 코드의 순서로 발전해보자
'개발일지 > TIL' 카테고리의 다른 글
TIL 23-04-17 (0) | 2023.04.17 |
---|---|
TIL 23-04-16 (0) | 2023.04.16 |
TIL 23-04-14 (3) | 2023.04.14 |
TIL 23-04-13 (2) | 2023.04.13 |
TIL 23-04-12 (0) | 2023.04.12 |