Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 댓글쓰기
- 팀프로젝트 기획
- CNN
- 개인페이지
- 프론트엔드
- 머신러닝
- ERD
- 딥러닝
- 장고
- Django
- 백엔드
- js
- Python
- class view
- 북마크한 목록 가져오기
- serializer
- 댓글지우기
- docker
- json to db
- API명세
- python to json
- 와이어프레임
- original set
- 다항 논리 회귀
- 비밀번호 수정
- test.py
- 팔로우 기능 에러
- 이진 논리 회귀
- 프로필사진 업로드
- DRF
Archives
- Today
- Total
코딩 개발일지
장고 과제 (개인페이지 / 완료 체크리스트 만들기) 본문
개인페이지는 혼자 힘으로 만들어냄
@csrf_exempt
def individual(request):
if request.method == "POST":
todos = Todo.objects.all()
context = {
'todos': todos,
}
return render(request, "todo/individual.html", context)
elif request.method == "GET":
todos = Todo.objects.all()
context = {
'todos': todos,
}
return render(request, "todo/individual.html", context)
else:
return HttpResponse('Invalid request method', status=405)
views.py에서 이렇게 썼고
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>todo 리스트</title>
</head>
<body>
<h1>{{user.username}}의 Todo 리스트</h1>
{% if request.user.is_authenticated %}
<div>
<a href="/todo/create/">
<button>새로만들기</button>
</a>
<ul>
<form action="/todo/is_completed/" method="post">
{% for todo in todos %}
{% if request.user.id == todo.user_id %}
<a href="/todo/{{todo.id}}">
<div>
<input type="checkbox" name={{ids}} id={{todo.id}} value={{todo.id}} >
{{ todo.content }}
</div>
</a>
{% endif %}
{% endfor %}
<button type="submit" >완료하기</button>
</form>
</ul>
</div>
<a>
<a href="/todo/">
<button>전체 Todo 리스트로 돌아가기</button>
</a>
{% else %}
<div>
<button onclick="location.href='/user/signus'">회원가입 하기</button>
<button onclick="location.href='/user/login'">로그인 하기</button>
</div>
{% endif %}
</body>
</html>
html은 이렇게 씀
원래 index.html에 있던 버튼과 기능들을 individual.html 로 옮겼고, views.py의 다른 함수들도 다 바꿔줬다.
{% if request.user.id == todo.user_id %}
if문 써서 로그인 한 사용자 것만 보이게 했다.
여기에 완료 체크박스를 만들어서
체크박스에 체크하고 '완료하기'버튼을 submit 해서 post 해주면,
▢ 운동하기
이런식으로 취소선을 긋는다던지, 색깔이 바뀌게해서 완료를 표시하고 싶었다.
models.py에서
is_completed = models.BooleanField(default=False)
이거를 class에 추가해주고, migrate해준다.
views.py에서
@csrf_exempt
def is_completed(request, todo_id):
if request.method == "POST":
todo = Todo.objects.get(id=todo_id)
todo.is_completed = True
todo.save()
return redirect('/todo/individual/')
elif request.method == "GET":
todo = Todo.objects.get(id=todo_id)
context = {
'todo': todo,
}
return render(request, "todo/individual.html", context)
else:
return HttpResponse('Invalid request method', status=405)
대충 이런식으로 만들어 놓고, urls.py에 연결을 했다. (잘 만든지도 모르겠음)
individual.html 안에 form태그로
<form action="/todo/is_completed/" method="post">
이걸 추가해줬는데, 그 다음을 모르겠다. 아마도 views.py도 많이 틀렸을 거라 예상...
html에서
{% for todo in todos %}
이 for문 안에
{% if todo.is_completed == True %}
이렇게 조건문을 걸어서 만져야 할 것 같다는 느낌?!?!
<form action="/todo/is_completed/" method="post">
{% for todo in todos %}
{% if request.user.id == todo.user_id %}
{% if todo.is_completed == False %}
<a href="/todo/{{todo.id}}">
<div>
<input type="checkbox" name={{ids}} id={{todo.id}} value={{todo.id}} >
{{ todo.content }}
</div>
</a>
{% else %}
<a href="/todo/{{todo.id}}">
<div>
<input type="checkbox" name={{ids}} id={{todo.id}} value={{todo.id}} >
(완료) {{ todo.content }}
</div>
</a>
{% endif %}
{% endif %}
{% endfor %}
<button type="submit" >완료하기</button>
</form>
html은 잘 만든것 같고, views.py를 어떻게 손봐야 할지 모르겠다.
해설을 들어보니, urls에서 todo.user_id를 지정해줘야 작동하는것 같다!!!!!
'AI 본 교육 > AI 5주차' 카테고리의 다른 글
장고 팀프로젝트 ERD / API명세 / 와이어프레임 (0) | 2023.09.08 |
---|---|
제출용 - 7팀 SA(Starting Assignments) - 버킷리스트 (0) | 2023.09.08 |
장고 수정하기 에러 / 이미지파일 추가 (1) | 2023.09.06 |
장고 회원가입+로그인/로그아웃 (0) | 2023.09.05 |
장고(Django 기본 틀 만들기 과정) 명령어 (2) | 2023.09.04 |