본문 바로가기
웹개발/django

django urls.py에서 views 함수 호출할 때 인자 전달하기

by julysein 2020. 9. 16.
728x90

urls.py에서 url을 작성할 때 뒤쪽에 실행될 views의 함수를 적음으로써 그 함수가 실행되도록 할 수 있다.

이때 url을 통해 받은 내용을 함수로 전달해줄 수도 있다.

 

예를 들어 post라는 app안에서 url의 뒤쪽에 /20 이라고 주소창에 치면 20을 이용한 함수가 실행되도록 하고자 한다면

 

 

path('<int:a>/',views.post_detail),

이때 <int:a>는 a라는 인자를 views.py안에 있는 post_detail이라는 함수에 전달할 예정인데 인수의 이름은

a이고 type은 int라는 것을 의미한다.

 

그리고 views.py의 post_detail에는 

def post_detail(request:HttpRequest, a:int):
	return HttpResponse(f"{a}")
    })

라고 작성한다

이렇게 하면 localhost:8000/post/10 검색 시 10이 뜰 것이다.

이때 이 {a}를 활용하여 다양한 표현을 할 수 있다.

 

예를 들어 a를 pk로 하는 post 모델의 object들을 불러오고 싶다고 하자

def post_detail(request:HttpRequest, a:int) ->HttpResponse:
    post = Post.objects.get(pk=a)
    return render(request, 'instagram/post_detail.html',{
        'post':post, #이렇게 post object내용을 post_detail.html으로 전달
    })

이렇게 하면 pk 가 a인 Post model의 object들이 post 에 저장되어 post_detail.html이라는 파일로 전달되고 거기서 post를 이용해 이런 저런 것들을 할 수 있다.

728x90