๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐ŸŒŒ | WEB DEV/Django

Django_์žฅ๊ณ  ๋ถ€์ˆ˜๊ธฐ (5)_ํŽ˜์ด์ง€ ์ด๋™, ์ƒ์„ธ ํŽ˜์ด์ง€

by KASSID 2022. 6. 30.

๋ชฉ์ฐจ

    728x90

    ํŽ˜์ด์ง€ ์ด๋™

    ๋ธŒ๋ผ์šฐ์ €๋กœ๋ถ€ํ„ฐ request๋ฅผ ๋ฐ›๊ณ  ์ ์ ˆํ•œ url์„ ์—ฐ๊ฒฐ์‹œ์ผœ์ฃผ์–ด์•ผ ํ•œ๋‹ค.

     

    urls.py)

    - urlํŒจํ„ด์— path๋ฅผ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค.

    path('url๊ฒฝ๋กœ', views.ํ•จ์ˆ˜๋ช…, name='ํ…œํ”Œ๋ฆฟ ํƒœ๊ทธ์— ์“ฐ์ผ ์ด๋ฆ„')

    ์˜ˆ์‹œ

    path('post_list', views.post_list, name='post_list'),

    'main๋ฃจํŠธ/post_lis't๊ฐ€ url ๊ฒฝ๋กœ๊ฐ€ ๋œ๋‹ค.

     

    views.py)

    request ๋“ฑ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ „๋‹ฌ ๋ฐ›์€ ๊ฒƒ์„ ์ฒ˜๋ฆฌํ•œ ํ›„

    render, redirect ๋“ฑ์˜ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœ, ๋ฐ˜ํ™˜ํ•œ๋‹ค.

     

    template)

    ํ…œํ”Œ๋ฆฟ์—์„œ๋Š” ํ…œํ”Œ๋ฆฟ ํƒœ๊ทธ๋ฅผ ์ด์šฉํ•ด ํ˜ธ์ถœํ•œ๋‹ค.

    ๋‚ด์šฉ์€ urls.py์˜ name์— ์ •์˜๋œ ์ด๋ฆ„์„ ์ด์šฉํ•œ๋‹ค.

    <a href="{% url 'post_list' %}">...</a>

     

    ์ƒ์„ธ ํŽ˜์ด์ง€

    pk(Primary Key)

    DB์˜ ๊ฐ ๋ ˆ์ฝ”๋“œ๋ฅผ ์‹๋ณ„ํ•˜๋Š” ๊ธฐ๋ณธ ํ‚ค์ด๋‹ค.

    ๋ชจ๋ธ์— ๊ธฐ๋ณธ ํ‚ค๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ์ž๋™์œผ๋กœ 'pk'๋ผ๋Š” ํ•„๋“œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ 

    ๊ฐ ๊ฐ์ฒด๋งˆ๋‹ค 1์”ฉ ์ฆ๊ฐ€ํ•˜๋ฉฐ ๊ฐ’์ด ๋ถ€์—ฌ๋œ๋‹ค.

     

    ์ด๋ฅผ ์ด์šฉํ•  ๊ฒฝ์šฐ ๊ฐ ๊ฐ์ฒด๋ฅผ ๊ฐœ๋ณ„์ ์œผ๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

    (๊ฐ์ฒด.pk๋กœ ์ ‘๊ทผ๊ฐ€๋Šฅ)

     

    ์˜ˆ์‹œ

    urls.py)

    path('post/<int:pk>/', views.post_detail, name='post_detail'),

    ์ „๋‹ฌ ๋ฐ›์€ ๊ฐ’์œผ๋กœ url๋ฃจํŠธ๋ฅผ ๊ตฌ์„ฑํ•œ๋‹ค.

     

    views.py)

    def post_detail(request, pk):
        post = get_object_or_404(Post, pk=pk)
        return render(request, 'blog/post_detail.html', {'post': post})

    urls.py์—์„œ ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋œ pk๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ฐ์ฒด์— ์ ‘๊ทผํ•œ ๋’ค, template์— ์ „๋‹ฌํ•œ๋‹ค.

     

    template)

    <a href="{% url 'post_detail' pk=post.pk %}">...</a>

    pk๊ฐ’์„ urls.py๋กœ ์ „๋‹ฌํ•œ๋‹ค.

     

     

    ๋Œ“๊ธ€