본문으로 바로가기

배운거 부터 열심히 하자. 기본이 없는데 욕심만 많아서 많은걸 하려고하니까 아무것도 못하고 결과물이 없는거다.

겸손하자.

코딩할때 두려움이 있다. 오류를 해결하지 못할 것 같고 '이걸 내가 할 수 있을까??' 라는 생각이 먼저 든다. 침착하게 문제와 오류를 를 해결하자! 코드 여러개에 손을 뻗어서 코딩하면 뭘 하고 있었는지 기억이 나지않는 경우가 있는데 주석을 잘 활용해서 설명을 적어두자 되돌리기도 편해진다.

 

MVT MODELS, VIEWS, TEMPLATES 에서 내가 어떻게 표현해야 하는지 알아야 했다. 보기만하고 어떻게 흘러가는지 전혀 모르는 상태에서 프로젝트에 임하니까 아무것도 하지못했다. 보고 따라만 하면안된다 클론코딩을 하더라도 주석을 달고 내가 이해하면서 따라해야한다.

 

팀원분이 코드를 하나하나 설명하면서 가르쳐주셨다. 정리하고 이해하는데 정말 큰 도움이 됐다. 그걸 복습하면서 프로젝트를 하면서 처음으로 views.py 코드 를 적어봤다.

@login_required(login_url='login')
def index(request):
    user = request.user
    followers = FollowModel.objects.filter(user=user)
    print(followers, 'minsu')
    posts=[]
    for followe in followers:
        pt=PostModel.objects.filter(author=followe.follow)
        print(followe.follow.username)
        posts += pt
    context = {
        'followers': followers,
        'posts' : posts,
    }
    print(posts)
    return render(request, 'index.html', context)

별것도 아니고 틀렸을지도 모를 코드지만 이제 장고가 어떻게 돌아가는지, python을 어떤식으로 이용하는지 이해했고 스스로 적어봤다는 것에 큰 의미가 있다! 앞으로 계속 발전하는 모습을 보여주고싶다!!

 

프로젝트에서 팀에게 조금이나마 보탬이 되기위해 회원수정 기능을 만들었는데. 내가배운걸 활용하면서 만들 수 있는 좋은 난이도 였던 것 같다. 내일은 기능을 더 추가해서 비밀번호를 수정하는 창을 하나 따로만들고 비밀번호를 잃어버렸을때 이메일로 인증하고 비밀번호를 바꿀 수 있는 기능을 팀원들과 함께 만들어 볼 생각이다.

#update.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<link href="/static/css/update_style.css" rel="stylesheet"/>

{% block content %}
<form class="mt-3" action="{% url 'update' %}" method="POST" enctype="multipart/form-data">
  {% csrf_token %}
    <div class="form-group">
      BIO : <input type="text" class="form-control" id="bio" name="bio" value="{{ user.bio }}">
    </div>
    <div class="form-group">
      Email : <input type="email" class="form-control" id="email" name="email" value="{{ user.email }}">
    </div>
    <div class="form-group">
      이름 : <input type="text" class="form-control" id="username" name="username" value="{{ user.username }}"> 
    </div>
    <div class="form-group">
      새 비밀번호 : <input type="password" class="form-control" id="password" name="password" placeholder="변경할 비밀번호를 입력하세요.">
    </div>
    <div class="btn btn-primary">
    <button type="submit">수정하기</button>
    </div>
</form>
{% endblock %}

<link href="/static/css/join_style.css" rel="stylesheet"/>

</body>
</html>
#user/views

@login_required
def update(request):
    if request.method == 'GET':
        return render(request, 'user/update.html')

    elif request.method == 'POST':
        user = request.user

        bio = request.POST.get('bio')
        email = request.POST.get('email')
        username = request.POST.get('username')
        password = request.POST.get('password')

        user.bio = bio
        user.email = email
        user.username = username
        user.password= password
        
        user.save()

        return redirect('login', user.username)

update2.html 로 프론트를 바꿔주면서 바꿀게 뭐가 있는지 생각해봤는데 처음 render의 html만 바꿔주면 됐다.

    if request.method == 'GET':
        return render(request, 'user/update2.html')

html을 바꾸고 에러가 계속 떠서 뭐지 했는데 html의 form 내부의 id와 name을 대문자로 적었고

<button type="submit">변경</button>

form이 끝나고 submit을 까먹었다.