본문 바로가기

IT/django(장고)

[django]장고 개발_7 - 회원수정, 회원삭제, class has no objects member 에러해결

회원 수정과, 회원 삭제 , class has no objects member 에러 해결에 대해서 알아볼게요.

 

path('member_modify/', views.member_modify, name='member_modify'),

 

accounts/urls.py에 회원수정 path의 코드를 입력해주세요.

 

<a href="{% url 'member_modify' %}">회원수정</a>

 

app폴더에 index.html에 회원수정에 대한 a태그를 넣어주세요.

 

def member_modify(request):
    if request.method == "POST":
        #id = request.user.id
        #user = User.objects.get(pk=id)
        user = request.user
        user.first_name = request.POST["first_name"]
        user.save()
        return redirect('/')
    return render(request, 'accounts/member_modify.html')

 

accounts/views.py에서 회원수정에 대한 함수 입력하는데 first_name의 정보를 수정해볼게요.

그리고 request.user.id를 사용해서 로그인되어있는 상태의 아이디를 가져올게요.

 

{% extends 'app/base.html' %}

{% block content %}
<h1>회원수정</h1>
    <form action="{% url 'member_modify' %}" method="POST">
        {% csrf_token %}
        first_name : <input type="text" name="first_name" value="{{ user.first_name }}">

        <input type="submit" value="회원수정">
    </form>

{% endblock %}

 

회원수정 템플릿을 만들어 주시고 회원 수정이 되는지를 확인해주세요.

 

이번에는 회원탈퇴를 해보겠어요.

 

   path('member_del/', views.member_del, name='member_del'),

 

accounts/urls.py에 회원 탈퇴 path의 코드를 입력해주세요.

 

<a href="{% url 'member_del' %}">회원탈퇴</a>

 

app/index.html에 회원탈퇴의 a태그를 입력해주세요.

 

def member_del(request):
    if request.method == "POST":
        pw_del = request.POST["pw_del"]
        user = request.user
        if check_password(pw_del, user.password):
            user.delete()
            return redirect('/')
    return render(request, 'accounts/member_del.html')

 

accounts/views.py에 회원탈퇴의 함수를 입력해주세요.

 

{% extends 'app/base.html' %}

{% block content %}
<h1>회원삭제</h1>
    <form action="{% url 'member_del' %}" method="POST">
        {% csrf_token %}
        비밀번호: <input type="text" name="pw_del">
        <input type="submit" value="회원탈퇴">
    </form>

{% endblock %}

 

마지막으로 회원탈퇴 탬플릿을 만들어 주시면 돼요.

 

class has no objects member 에러 해결

오류가 발생하는 이유는 vs code의 경고 때문이에요. djngo는 objects와 속성들을 모든 model 클래스에 동적으로 추가하기 때문에 vs code는 이를 알지 못하기 때문에 경고를 하게 되는데 이에 대해 해결책은

 

class Post(models.Model):
    #objects = models.Manager() #vs code 오류 발생시

 

models.py에서 class 안에 objects = models.Manager()를 입력해주세요.