장고 팀프로젝트(1)

김혁준·2023년 4월 15일
0

django

목록 보기
1/18

장고 기초 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()을 실행해서 이미지를 제거한다.

profile
스프링 개발자 지망생입니다

0개의 댓글