장고 기초 url,템플릿,viewpy함수 실전 연계
url.py:
urlpatterns = [
path("my-page/<int:user_id>/delete-image",views.profile_img_delete,name="profile_img_delete")
]
: 위의 경로로 가면 profile_img_delete함수를 실행한다.
templete:
<form action="/my-page/{{user.id}}/delete-image" method="POST">
{% csrf_token %}
<div class="input-group">
<button class="btn btn-primary" type="submit">이미지 삭제</button>
</div>
</form>
: 이미지 삭제 버튼을 누르면 폼태그의 액션대로 페이지가 이동되는데, url.py의 경로와 같으므로 함수가 실행된다. 즉, 버튼을 누르면 profile_img_delete함수가 실행된다.
view.py:
@login_required
def profile_img_delete(request, user_id):
users = UserModel.objects.get(id=user_id)
if users.id == request.user.id:
users.image.delete()
return redirect(request.META.get('HTTP_REFERER', 'redirect_if_referer_not_found'))
return redirect("/")
: 리퀘스트와 유저의아이디를 인자로 받고 유저의 아이디와 요청한 유저의 아이디가 같으면(동일인물이면) users.image.delete()을 실행해서 이미지를 제거한다.