• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    해결됨

Update View 상에서 아이디를 제대로 불러오지 않습니

22.08.01 14:56 작성 조회수 174

1

 

 

코드를 똑같이 붙여보았지만, 제대로 작동이 되지 않습니다. 

detail.html과 update.html에서 pk를 제대로 넘겨주었습니다.

그런데 왜 관련 유저 정보가 뜨지 않는지 궁금합니다..

그리고 솔직히 어떻게 creationForm에서의 {{ boostrap_form form }} 만 넘겨주었을 뿐인데, 유저 정보가 들어가는지 원리를 제대로 모르겠습니다. 그냥 Django에서 View를 가져다 쓰기만해서 해당 원리에 대해 잘 이해가 가지 않습니다..

 

 

 

 

 
update.html
 
{% extends 'base.html' %} {% load bootstrap4 %} {% block content %}

<div class="Container main_content_div">
<div class="mb-4">
<h4>Update Info</h4>
</div>
<form action="{% url 'accountapp:update' pk=user.pk %}" method="post">
{% csrf_token %} {% bootstrap_form form %}
<input type="submit" class="btn btn-dark rounded-pill col-6 mt-3" />
</form>
</div>

{% endblock %}
 
 
detail.html
 
{% extends 'base.html' %} {%block content%}
<div class="main_content_div">
<p>{{ access_user.date_joined }}</p>

<h2>{{ access_user.username }}</h2>

{% if access_user == user %}
<a href="{% url 'accountapp:update' pk=user.pk %}">
<p>Update Info</p>
</a>
{% endif %}
</div>
{% endblock%}

view.py

class DetailView(DetailView):
model = User
context_object_name = 'access_user'
template_name = 'accountapp/detail.html'
class UpdateView(CreateView):
model = User
form_class = AccountUpdateForm
success_url = reverse_lazy('accountapp:hello')
template_name = 'accountapp/update.html'
 
 
urls.py
path('update/<int:pk>', UpdateView.as_view(), name="update"),

답변 1

답변을 작성해보세요.

0

안녕하세요.
질문 확인했습니다.

아무래도 클래스 상속에 문제가 있어 보입니다.

 

class DetailView(DetailView):
model = User
context_object_name = 'access_user'
template_name = 'accountapp/detail.html'
class UpdateView(CreateView):
model = User
form_class = AccountUpdateForm
success_url = reverse_lazy('accountapp:hello')
template_name = 'accountapp/update.html'
 
올려주신 내용중 위 코드를 보면,
UpdateView인데 CreateView 를 상속받아 구성하고 있는 것을 볼 수 있습니다.
해당 코드를 UpdateView 로 수정하신 이후 진행해보시고,
그럼에도 문제가 생긴다면 계속 질문 남겨주시길 바랍니다.
 
감사합니다-