Post 수정 화면 / 기능 구현하기
update된 url을 반환하는 함수 만들어 주기
blog/models.py
def get_update_url(self): return self.get_absolute_url() + 'update/'
|
update된 url로 접속하기
blog/views.py
from django.views.generic import UpdateView class PostUpdate(UpdateView): model = Post field = '__all__'
|
blog/urls.py
from django.urls import path, include from .import views urlpatterns = [ path('category/<str:slug>/', views.PostListByCategory.as_view()), path('<int:pk>/update/', views.PostUpdate.as_view()), path('<int:pk>/', views.PostDetail.as_view()), path('', views.PostList.as_view()), ]
|
post_form 추가하기
blog/templates/blog/post_form.html
{% extends 'blog/base.html' %}
{% block title %}{{ object.title }}{% endblock %} {% block content %} {{ form }} {% endblock %}
|
update 페이지에 원하는 field만 가져오기
blog/views.py
class PostUpdate(UpdateView): model = Post fields = [ 'title', 'content', 'head_image', 'category', ]
|
update 페이지 다듬어 주기
blog/templates/blog/post_form.html
{% extends 'blog/base.html' %}
{% block title %}{{ object.title }}{% endblock %} {% block content %} <table> {{ form.as_table }} </table> {% endblock %}
|
실시간으로 변경사항 볼 수 있게하기
blog/templates/blog/post_form.html
{% extends 'blog/base.html' %}
{% block title %}{{ object.title }}{% endblock %} {% block content %} <form method="POST" action="">{% csrf_token %} <table> {{ form.as_table }} </table> <button type="submit" class="btn btn-primary float-right">submit</button> </form> {{ form.media }} {% endblock %}
|
Edit 버튼 활성화 하기
blog/templates/blog/post_detail.html
<button type="button" class="btn btn-sm btn-secondary float-right" onclick="location.href='{{ object.get_update_url }}'">EDIT</button>
|