{"id":4834,"date":"2025-02-04T06:44:27","date_gmt":"2025-02-03T21:44:27","guid":{"rendered":"https:\/\/secondlife.lol\/?p=4834"},"modified":"2025-02-02T09:40:47","modified_gmt":"2025-02-02T00:40:47","slug":"django-views-advanced-techniques","status":"publish","type":"post","link":"https:\/\/secondlife.lol\/zh\/django-views-advanced-techniques\/","title":{"rendered":"\u6df1\u5165\u4e86\u89e3 Django \u89c6\u56fe\uff1a\u638c\u63e1\u9ad8\u7ea7\u529f\u80fd\u548c\u4f18\u5316\u6280\u672f"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">\uc548\ub155\ud558\uc138\uc694, Django \uac1c\ubc1c\uc790 \uc5ec\ub7ec\ubd84! \uc624\ub298\uc740 <a href=\"https:\/\/secondlife.lol\/django-views-basics-for-beginners\/\">\uae30\ubcf8<\/a>\uc5d0 \uc774\uc5b4\uc11c <a href=\"https:\/\/www.djangoproject.com\/\" target=\"_blank\" rel=\"noopener\">Django<\/a> Views \uc2ec\ud654 \uae30\ub2a5\uc5d0 \ub300\ud574 \uc54c\uc544\ubcfc \uac70\uc608\uc694. \uae30\ubcf8\uc801\uc778 \ud568\uc218\ud615 \ubdf0\ub294 \uc774\uc81c \uc775\uc219\ud558\uc2dc\uc8e0? \uc774\uc81c \ud55c \ub2e8\uacc4 \ub354 \ub098\uc544\uac00 Views\ub97c \ub354\uc6b1 \ud6a8\uc728\uc801\uc73c\ub85c \uc0ac\uc6a9\ud558\uace0, \ud504\ub85c\uc81d\ud2b8\ub97c \ud55c\uce35 \ub354 \uac15\ub825\ud558\uac8c \ub9cc\ub4e4\uc5b4\ubcfc \uc2dc\uac04\uc785\ub2c8\ub2e4. \uc5ec\ub7ec\ubd84\uc758 Django \uc2e4\ub825\uc744 \ud55c \ub2e8\uacc4 \uc5c5\uadf8\ub808\uc774\ub4dc\ud560 \uc900\ube44\ub418\uc168\ub098\uc694? \uc790, \uc2dc\uc791\ud574\ubcfc\uae4c\uc694?<\/p>\n\n\n<style>.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-content-wrap{padding-top:var(--global-kb-spacing-sm, 1.5rem);padding-right:var(--global-kb-spacing-sm, 1.5rem);padding-bottom:var(--global-kb-spacing-sm, 1.5rem);padding-left:var(--global-kb-spacing-sm, 1.5rem);border-top:3px solid var(--global-palette2, #2B6CB0);border-right:3px solid var(--global-palette2, #2B6CB0);border-bottom:3px solid var(--global-palette2, #2B6CB0);border-left:3px solid var(--global-palette2, #2B6CB0);border-top-left-radius:5px;border-top-right-radius:5px;border-bottom-right-radius:5px;border-bottom-left-radius:5px;box-shadow:0px 0px 14px 0px rgba(0, 0, 0, 0.2);}.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-contents-title-wrap{padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-contents-title-wrap{color:var(--global-palette2, #2B6CB0);}.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-contents-title{color:var(--global-palette2, #2B6CB0);font-size:28px;font-weight:regular;font-style:normal;}.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-content-wrap .kb-table-of-content-list{color:var(--global-palette1, #3182CE);line-height:2em;font-weight:regular;font-style:normal;margin-top:var(--global-kb-spacing-sm, 1.5rem);margin-right:0px;margin-bottom:0px;margin-left:0px;}.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-content-wrap .kb-table-of-content-list .kb-table-of-contents__entry:hover{color:var(--global-palette6, #718096);}@media all and (max-width: 1024px){.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-content-wrap{border-top:3px solid var(--global-palette2, #2B6CB0);border-right:3px solid var(--global-palette2, #2B6CB0);border-bottom:3px solid var(--global-palette2, #2B6CB0);border-left:3px solid var(--global-palette2, #2B6CB0);}}@media all and (max-width: 1024px){.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-contents-title{font-size:28px;}}@media all and (max-width: 767px){.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-content-wrap{border-top:3px solid var(--global-palette2, #2B6CB0);border-right:3px solid var(--global-palette2, #2B6CB0);border-bottom:3px solid var(--global-palette2, #2B6CB0);border-left:3px solid var(--global-palette2, #2B6CB0);}.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-contents-title{font-size:28px;}}<\/style>\n\n<style>.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-content-wrap{padding-top:var(--global-kb-spacing-sm, 1.5rem);padding-right:var(--global-kb-spacing-sm, 1.5rem);padding-bottom:var(--global-kb-spacing-sm, 1.5rem);padding-left:var(--global-kb-spacing-sm, 1.5rem);border-top:3px solid var(--global-palette2, #2B6CB0);border-right:3px solid var(--global-palette2, #2B6CB0);border-bottom:3px solid var(--global-palette2, #2B6CB0);border-left:3px solid var(--global-palette2, #2B6CB0);border-top-left-radius:5px;border-top-right-radius:5px;border-bottom-right-radius:5px;border-bottom-left-radius:5px;box-shadow:0px 0px 14px 0px rgba(0, 0, 0, 0.2);}.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-contents-title-wrap{padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-contents-title-wrap{color:var(--global-palette2, #2B6CB0);}.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-contents-title{color:var(--global-palette2, #2B6CB0);font-size:28px;font-weight:regular;font-style:normal;}.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-content-wrap .kb-table-of-content-list{color:var(--global-palette1, #3182CE);line-height:2em;font-weight:regular;font-style:normal;margin-top:var(--global-kb-spacing-sm, 1.5rem);margin-right:0px;margin-bottom:0px;margin-left:0px;}.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-content-wrap .kb-table-of-content-list .kb-table-of-contents__entry:hover{color:var(--global-palette6, #718096);}@media all and (max-width: 1024px){.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-content-wrap{border-top:3px solid var(--global-palette2, #2B6CB0);border-right:3px solid var(--global-palette2, #2B6CB0);border-bottom:3px solid var(--global-palette2, #2B6CB0);border-left:3px solid var(--global-palette2, #2B6CB0);}}@media all and (max-width: 1024px){.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-contents-title{font-size:28px;}}@media all and (max-width: 767px){.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-content-wrap{border-top:3px solid var(--global-palette2, #2B6CB0);border-right:3px solid var(--global-palette2, #2B6CB0);border-bottom:3px solid var(--global-palette2, #2B6CB0);border-left:3px solid var(--global-palette2, #2B6CB0);}.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-contents-title{font-size:28px;}}<\/style>\n\n\n<h2 class=\"wp-block-heading\">Django Views \uc2ec\ud654 &#8211; \ud074\ub798\uc2a4 \uae30\ubc18 \ubdf0(CBV)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\ud074\ub798\uc2a4 \uae30\ubc18 \ubdf0(Class-Based Views, CBV)\ub294 \ud30c\uc774\uc36c-\uc7a5\uace0 \uc6f9 \uac1c\ubc1c \ud504\ub808\uc784\uc6cc\ud06c\uc5d0\uc11c \uc81c\uacf5\ud558\ub294 \uae30\ub2a5\uc73c\ub85c, \uc6f9 \ud398\uc774\uc9c0\uc758 \uae30\ub2a5\uc744 \ud074\ub798\uc2a4 \ud615\ud0dc\ub85c \uad6c\ud604\ud558\uc5ec \ucf54\ub4dc\uc758 \uc7ac\uc0ac\uc6a9\uc131\uc744 \ub192\uc774\uace0 \uad6c\uc870\ud654\ub97c \uc6a9\uc774\ud558\uac8c \ud569\ub2c8\ub2e4. CBV\ub294 \ud568\uc218 \uae30\ubc18 \ubdf0(Function-Based Views, FBV)\uc5d0 \ube44\ud574 \ub2e4\uc74c\uacfc \uac19\uc740 \uc7a5\uc810\uc744 \uac00\uc9d1\ub2c8\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\uc7a5\uc810<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\ub2e4\uc591\ud55c \uae30\ub2a5 \uc81c\uacf5<\/strong>: CBV\ub294 \uc81c\ub124\ub9ad \ubdf0(Generic Views)\ub97c \ud1b5\ud574 \ubaa9\ub85d, \uc0c1\uc138, \uc0dd\uc131, \uc218\uc815, \uc0ad\uc81c \ub4f1 \ub2e4\uc591\ud55c \uae30\ub2a5\uc744 \ubbf8\ub9ac \uad6c\ud604\ud574\ub193\uc558\uc2b5\ub2c8\ub2e4. \ub530\ub77c\uc11c \uac1c\ubc1c\uc790\ub294 \ud544\uc694\ud55c \uae30\ub2a5\uc744 \uac04\ub2e8\ud558\uac8c \uc0c1\uc18d\ud558\uc5ec \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n\n\n\n<li><strong>\ucf54\ub4dc \uc7ac\uc0ac\uc6a9\uc131<\/strong>: CBV\ub294 \uc0c1\uc18d\uc744 \ud1b5\ud574 \ucf54\ub4dc\ub97c \uc7ac\uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4, \ubaa9\ub85d \ud398\uc774\uc9c0\uc640 \uc0c1\uc138 \ud398\uc774\uc9c0\ub294 \uc720\uc0ac\ud55c \uae30\ub2a5\uc744 \ub9ce\uc774 \uac00\uc9c0\uace0 \uc788\ub294\ub370, CBV\ub97c \uc0ac\uc6a9\ud558\uba74 \uacf5\ud1b5 \ubd80\ubd84\uc744 \ubd80\ubaa8 \ud074\ub798\uc2a4\uc5d0 \uc815\uc758\ud558\uace0 \uac01\uac01\uc758 \ud398\uc774\uc9c0\uc5d0\uc11c \ud544\uc694\ud55c \uae30\ub2a5\ub9cc \ucd94\uac00\ud558\uc5ec \ucf54\ub4dc\ub97c \uac04\uacb0\ud558\uac8c \uc791\uc131\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n\n\n\n<li><strong>\ucf54\ub4dc \uad6c\uc870\ud654<\/strong>: CBV\ub294 \uae30\ub2a5\ubcc4\ub85c \ud074\ub798\uc2a4\ub97c \ub098\ub204\uc5b4 \ucf54\ub4dc\ub97c \uad6c\uc870\ud654\ud558\uae30 \uc6a9\uc774\ud569\ub2c8\ub2e4. \uc774\ub807\uac8c \ud558\uba74 \ucf54\ub4dc\ub97c \uc774\ud574\ud558\uace0 \uc720\uc9c0\ubcf4\uc218\ud558\uae30\uac00 \uc26c\uc6cc\uc9d1\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\uac04\ub2e8\ud55c \uc608\uc2dc\ub97c \uc0b4\ud3b4\ubcf4\ub3c4\ub85d \ud558\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code language-python\"><code>from django.views import View\nfrom django.http import HttpResponse\n\nclass HelloView(View):\n    def get(self, request):\n        return HttpResponse(\"\uc548\ub155\ud558\uc138\uc694, \ud074\ub798\uc2a4 \uae30\ubc18 \ubdf0\uc608\uc694!\")<\/code><\/pre>\n\n\n<style>.wp-block-kadence-advancedheading.kt-adv-heading4834_acb5b1-aa, .wp-block-kadence-advancedheading.kt-adv-heading4834_acb5b1-aa[data-kb-block=\"kb-adv-heading4834_acb5b1-aa\"]{font-style:normal;}.wp-block-kadence-advancedheading.kt-adv-heading4834_acb5b1-aa mark.kt-highlight, .wp-block-kadence-advancedheading.kt-adv-heading4834_acb5b1-aa[data-kb-block=\"kb-adv-heading4834_acb5b1-aa\"] mark.kt-highlight{font-style:normal;color:#f76a0c;-webkit-box-decoration-break:clone;box-decoration-break:clone;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.wp-block-kadence-advancedheading.kt-adv-heading4834_acb5b1-aa img.kb-inline-image, .wp-block-kadence-advancedheading.kt-adv-heading4834_acb5b1-aa[data-kb-block=\"kb-adv-heading4834_acb5b1-aa\"] img.kb-inline-image{width:150px;vertical-align:baseline;}<\/style>\n<h3 class=\"kt-adv-heading4834_acb5b1-aa wp-block-kadence-advancedheading\" data-kb-block=\"kb-adv-heading4834_acb5b1-aa\">\ucf54\ub4dc \uc124\uba85<\/h3>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<h5 class=\"wp-block-heading\">1. <code>from django.views import View<\/code><\/h5>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Django\uc758 <code>views<\/code> \ubaa8\ub4c8\uc5d0\uc11c <code>View<\/code> \ud074\ub798\uc2a4\ub97c \uac00\uc838\uc635\ub2c8\ub2e4.<\/li>\n\n\n\n<li><code>View<\/code> \ud074\ub798\uc2a4\ub294 \ud074\ub798\uc2a4 \uae30\ubc18 \ubdf0(CBV)\ub97c \ub9cc\ub4e4 \ub54c \uc0c1\uc18d\ubc1b\ub294 \uae30\ubcf8\uc801\uc778 \ud074\ub798\uc2a4\uc785\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<h5 class=\"wp-block-heading\">2. <code>from django.http import HttpResponse<\/code><\/h5>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Django\uc758 <code>http<\/code> \ubaa8\ub4c8\uc5d0\uc11c <code>HttpResponse<\/code> \ud074\ub798\uc2a4\ub97c \uac00\uc838\uc635\ub2c8\ub2e4.<\/li>\n\n\n\n<li><code>HttpResponse<\/code> \ud074\ub798\uc2a4\ub294 HTTP \uc751\ub2f5\uc744 \uc0dd\uc131\ud560 \ub54c \uc0ac\uc6a9\ub429\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<h5 class=\"wp-block-heading\">3. <code>class HelloView(View):<\/code><\/h5>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>HelloView<\/code>\ub77c\ub294 \uc774\ub984\uc758 \ud074\ub798\uc2a4\ub97c \uc815\uc758\ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li>\uc774 \ud074\ub798\uc2a4\ub294 <code>View<\/code> \ud074\ub798\uc2a4\ub97c \uc0c1\uc18d\ubc1b\uc2b5\ub2c8\ub2e4.<\/li>\n\n\n\n<li>\uc989, <code>HelloView<\/code>\ub294 \ud074\ub798\uc2a4 \uae30\ubc18 \ubdf0\uac00 \ub429\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<h5 class=\"wp-block-heading\">4. <code>def get(self, request):<\/code><\/h5>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>HelloView<\/code> \ud074\ub798\uc2a4 \uc548\uc5d0 <code>get<\/code>\uc774\ub77c\ub294 \uba54\uc11c\ub4dc\ub97c \uc815\uc758\ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li><code>get<\/code> \uba54\uc11c\ub4dc\ub294 HTTP GET \uc694\uccad\uc744 \ucc98\ub9ac\ud558\ub294 \uc5ed\ud560\uc744 \ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li><code>request<\/code>\ub294 \ud074\ub77c\uc774\uc5b8\ud2b8\ub85c\ubd80\ud130\uc758 \uc694\uccad \uc815\ubcf4\ub97c \ub2f4\uace0 \uc788\ub294 \uac1d\uccb4\uc785\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<h5 class=\"wp-block-heading\">5. <code>return HttpResponse(\"\uc548\ub155\ud558\uc138\uc694, \ud074\ub798\uc2a4 \uae30\ubc18 \ubdf0\uc608\uc694!\")<\/code><\/h5>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>HttpResponse<\/code> \uac1d\uccb4\ub97c \uc0dd\uc131\ud558\uace0, \uc778\uc790\ub85c &#8220;\uc548\ub155\ud558\uc138\uc694, \ud074\ub798\uc2a4 \uae30\ubc18 \ubdf0\uc608\uc694!&#8221;\ub77c\ub294 \ubb38\uc790\uc5f4\uc744 \uc804\ub2ec\ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li>\uc774 \ubb38\uc790\uc5f4\uc740 HTTP \uc751\ub2f5\uc758 \ubcf8\ubb38(body)\uc5d0 \ub2f4\uaca8\uc11c \ud074\ub77c\uc774\uc5b8\ud2b8\uc5d0\uac8c \uc804\uc1a1\ub429\ub2c8\ub2e4.<\/li>\n\n\n\n<li><code>return<\/code> \ubb38\uc740 <code>HttpResponse<\/code> \uac1d\uccb4\ub97c \ubc18\ud658\ud569\ub2c8\ub2e4.<\/li>\n<\/ul>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774 \ubdf0\ub97c URL\uc5d0 \uc5f0\uacb0\ud560 \ub54c\ub294 \uc774\ub807\uac8c \ud574\uc694. \ube0c\ub77c\uc6b0\uc800 \uc8fc\uc18c\ucc3d\uc5d0 &#8220;\ud648\ud398\uc774\uc9c0 \uc8fc\uc18c\/hello\/&#8221; \uac00 \uc785\ub825\ub418\uba74  HellowView\uac00 \ub3d9\uc791\ud558\uac8c \ub429\ub2c8\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code language-python\"><code>path('hello\/', HelloView.as_view(), name='hello'), # 'hello\/' URL\uc5d0 HelloView\ub97c \uc5f0\uacb0\ud558\uace0, 'hello'\ub77c\ub294 \uc774\ub984 \ubd80\uc5ec<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud074\ub798\uc2a4 \uae30\ubc18 \ubdf0\uc758 \uc7a5\uc810\uc740 HTTP \uba54\uc11c\ub4dc\ubcc4\ub85c \uc27d\uac8c \ucc98\ub9ac\ud560 \uc218 \uc788\ub2e4\ub294 \uac70\uc608\uc694.<\/p>\n\n\n\n<pre class=\"wp-block-code language-python\"><code>class MyView(View):\n    def get(self, request):\n        # GET \uc694\uccad \ucc98\ub9ac\n        return HttpResponse(\"GET \uc694\uccad\uc774\uc5d0\uc694\")\n\n    def post(self, request):\n        # POST \uc694\uccad \ucc98\ub9ac\n        return HttpResponse(\"POST \uc694\uccad\uc774\uc5d0\uc694\")<\/code><\/pre>\n\n\n<style>.wp-block-kadence-advancedheading.kt-adv-heading4834_18d611-72, .wp-block-kadence-advancedheading.kt-adv-heading4834_18d611-72[data-kb-block=\"kb-adv-heading4834_18d611-72\"]{font-style:normal;}.wp-block-kadence-advancedheading.kt-adv-heading4834_18d611-72 mark.kt-highlight, .wp-block-kadence-advancedheading.kt-adv-heading4834_18d611-72[data-kb-block=\"kb-adv-heading4834_18d611-72\"] mark.kt-highlight{font-style:normal;color:#f76a0c;-webkit-box-decoration-break:clone;box-decoration-break:clone;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.wp-block-kadence-advancedheading.kt-adv-heading4834_18d611-72 img.kb-inline-image, .wp-block-kadence-advancedheading.kt-adv-heading4834_18d611-72[data-kb-block=\"kb-adv-heading4834_18d611-72\"] img.kb-inline-image{width:150px;vertical-align:baseline;}<\/style>\n<h3 class=\"kt-adv-heading4834_18d611-72 wp-block-kadence-advancedheading\" data-kb-block=\"kb-adv-heading4834_18d611-72\">\ucf54\ub4dc \ud574\uc124<\/h3>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<h5 class=\"wp-block-heading\">1. <code>class MyView(View):<\/code><\/h5>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>MyView<\/code>\ub77c\ub294 \uc774\ub984\uc758 \ud074\ub798\uc2a4\ub97c \uc815\uc758\ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li>\uc774 \ud074\ub798\uc2a4\ub294 Django\uc758 <code>View<\/code> \ud074\ub798\uc2a4\ub97c \uc0c1\uc18d\ubc1b\uc2b5\ub2c8\ub2e4.<\/li>\n\n\n\n<li>\uc989, <code>MyView<\/code>\ub294 \ud074\ub798\uc2a4 \uae30\ubc18 \ubdf0(Class-Based View, CBV)\uac00 \ub429\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<h5 class=\"wp-block-heading\">2. <code>def get(self, request):<\/code><\/h5>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>MyView<\/code> \ud074\ub798\uc2a4 \uc548\uc5d0 <code>get<\/code>\uc774\ub77c\ub294 \uba54\uc11c\ub4dc\ub97c \uc815\uc758\ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li><code>get<\/code> \uba54\uc11c\ub4dc\ub294 HTTP GET \uc694\uccad\uc744 \ucc98\ub9ac\ud558\ub294 \uc5ed\ud560\uc744 \ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li>\ud074\ub77c\uc774\uc5b8\ud2b8\uac00 \uc6f9 \ud398\uc774\uc9c0\uc5d0 \uc811\uc18d\ud588\uc744 \ub54c, \uc6f9 \ube0c\ub77c\uc6b0\uc800\ub294 \uc11c\ubc84\uc5d0 GET \uc694\uccad\uc744 \ubcf4\ub0c5\ub2c8\ub2e4.<\/li>\n\n\n\n<li><code>request<\/code>\ub294 \ud074\ub77c\uc774\uc5b8\ud2b8\ub85c\ubd80\ud130\uc758 \uc694\uccad \uc815\ubcf4\ub97c \ub2f4\uace0 \uc788\ub294 \uac1d\uccb4\uc785\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<h5 class=\"wp-block-heading\">3. <code># GET \uc694\uccad \ucc98\ub9ac<\/code> : <\/h5>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\uc8fc\uc11d\uc785\ub2c8\ub2e4. \ucf54\ub4dc\uc758 \uae30\ub2a5\uc744 \uc124\uba85\ud558\ub294 \uc6a9\ub3c4\ub85c \uc0ac\uc6a9\ub429\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<h5 class=\"wp-block-heading\">4. <code>return HttpResponse(\"GET \uc694\uccad\uc774\uc5d0\uc694\")<\/code><\/h5>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>HttpResponse<\/code> \uac1d\uccb4\ub97c \uc0dd\uc131\ud558\uace0, \uc778\uc790\ub85c &#8220;GET \uc694\uccad\uc774\uc5d0\uc694&#8221;\ub77c\ub294 \ubb38\uc790\uc5f4\uc744 \uc804\ub2ec\ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li>\uc774 \ubb38\uc790\uc5f4\uc740 HTTP \uc751\ub2f5\uc758 \ubcf8\ubb38(body)\uc5d0 \ub2f4\uaca8\uc11c \ud074\ub77c\uc774\uc5b8\ud2b8\uc5d0\uac8c \uc804\uc1a1\ub429\ub2c8\ub2e4.<\/li>\n\n\n\n<li><code>return<\/code> \ubb38\uc740 <code>HttpResponse<\/code> \uac1d\uccb4\ub97c \ubc18\ud658\ud569\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<h5 class=\"wp-block-heading\">5. <code>def post(self, request):<\/code><\/h5>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>MyView<\/code> \ud074\ub798\uc2a4 \uc548\uc5d0 <code>post<\/code>\ub77c\ub294 \uba54\uc11c\ub4dc\ub97c \uc815\uc758\ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li><code>post<\/code> \uba54\uc11c\ub4dc\ub294 HTTP POST \uc694\uccad\uc744 \ucc98\ub9ac\ud558\ub294 \uc5ed\ud560\uc744 \ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li>\ud074\ub77c\uc774\uc5b8\ud2b8\uac00 \ud3fc(form) \ub370\uc774\ud130\ub97c \uc11c\ubc84\uc5d0 \uc81c\ucd9c\ud560 \ub54c, \uc6f9 \ube0c\ub77c\uc6b0\uc800\ub294 \uc11c\ubc84\uc5d0 POST \uc694\uccad\uc744 \ubcf4\ub0c5\ub2c8\ub2e4.<\/li>\n\n\n\n<li><code>request<\/code>\ub294 \ud074\ub77c\uc774\uc5b8\ud2b8\ub85c\ubd80\ud130\uc758 \uc694\uccad \uc815\ubcf4\ub97c \ub2f4\uace0 \uc788\ub294 \uac1d\uccb4\uc785\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<h5 class=\"wp-block-heading\">6. <code># POST \uc694\uccad \ucc98\ub9ac<\/code>: <\/h5>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\uc8fc\uc11d\uc785\ub2c8\ub2e4. \ucf54\ub4dc\uc758 \uae30\ub2a5\uc744 \uc124\uba85\ud558\ub294 \uc6a9\ub3c4\ub85c \uc0ac\uc6a9\ub429\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<h5 class=\"wp-block-heading\">7. <code>return HttpResponse(\"POST \uc694\uccad\uc774\uc5d0\uc694\")<\/code><\/h5>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>HttpResponse<\/code> \uac1d\uccb4\ub97c \uc0dd\uc131\ud558\uace0, \uc778\uc790\ub85c &#8220;POST \uc694\uccad\uc774\uc5d0\uc694&#8221;\ub77c\ub294 \ubb38\uc790\uc5f4\uc744 \uc804\ub2ec\ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li>\uc774 \ubb38\uc790\uc5f4\uc740 HTTP \uc751\ub2f5\uc758 \ubcf8\ubb38(body)\uc5d0 \ub2f4\uaca8\uc11c \ud074\ub77c\uc774\uc5b8\ud2b8\uc5d0\uac8c \uc804\uc1a1\ub429\ub2c8\ub2e4.<\/li>\n\n\n\n<li><code>return<\/code> \ubb38\uc740 <code>HttpResponse<\/code> \uac1d\uccb4\ub97c \ubc18\ud658\ud569\ub2c8\ub2e4.<\/li>\n<\/ul>\n<\/blockquote>\n\n\n<style>.wp-block-kadence-advancedheading.kt-adv-heading4834_f77282-a7, .wp-block-kadence-advancedheading.kt-adv-heading4834_f77282-a7[data-kb-block=\"kb-adv-heading4834_f77282-a7\"]{font-style:normal;}.wp-block-kadence-advancedheading.kt-adv-heading4834_f77282-a7 mark.kt-highlight, .wp-block-kadence-advancedheading.kt-adv-heading4834_f77282-a7[data-kb-block=\"kb-adv-heading4834_f77282-a7\"] mark.kt-highlight{font-style:normal;color:#f76a0c;-webkit-box-decoration-break:clone;box-decoration-break:clone;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.wp-block-kadence-advancedheading.kt-adv-heading4834_f77282-a7 img.kb-inline-image, .wp-block-kadence-advancedheading.kt-adv-heading4834_f77282-a7[data-kb-block=\"kb-adv-heading4834_f77282-a7\"] img.kb-inline-image{width:150px;vertical-align:baseline;}<\/style>\n<h2 class=\"kt-adv-heading4834_f77282-a7 wp-block-kadence-advancedheading\" data-kb-block=\"kb-adv-heading4834_f77282-a7\">Django Views \uc2ec\ud654 &#8211; \uc81c\ub124\ub9ad \ubdf0 \ud65c\uc6a9\ud558\uae30<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Django\ub294 \uc6f9 \uac1c\ubc1c\uc5d0\uc11c \uc790\uc8fc \uc0ac\uc6a9\ub418\ub294 \ud328\ud134\uc744 \ubbf8\ub9ac \uad6c\ud604\ud574 \ub193\uc740 \uc81c\ub124\ub9ad \ubdf0(Generic Views)\ub97c \uc81c\uacf5\ud569\ub2c8\ub2e4. \uc81c\ub124\ub9ad \ubdf0\ub97c \uc0ac\uc6a9\ud558\uba74 \ubc18\ubcf5\uc801\uc778 \ucf54\ub4dc \uc791\uc131\uc744 \uc904\uc774\uace0, \ucf54\ub4dc\uc758 \uac00\ub3c5\uc131\uc744 \ub192\uc5ec \uac1c\ubc1c \uc0dd\uc0b0\uc131\uc744 \ud5a5\uc0c1\uc2dc\ud0ac \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\uc81c\ub124\ub9ad \ubdf0\uc758 \uc7a5\uc810<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\ucf54\ub4dc \uc7ac\uc0ac\uc6a9\uc131<\/strong>: \uc81c\ub124\ub9ad \ubdf0\ub294 \uc790\uc8fc \uc0ac\uc6a9\ub418\ub294 \uae30\ub2a5\uc744 \ubbf8\ub9ac \uad6c\ud604\ud574 \ub193\uc558\uae30 \ub54c\ubb38\uc5d0, \uac1c\ubc1c\uc790\ub294 \ud544\uc694\ud55c \uae30\ub2a5\uc744 \uc0c1\uc18d\ubc1b\uc544 \uac04\ub2e8\ud558\uac8c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n\n\n\n<li><strong>\ucf54\ub4dc \uac04\uacb0\uc131<\/strong>: \uc81c\ub124\ub9ad \ubdf0\ub294 \ubc18\ubcf5\uc801\uc778 \ucf54\ub4dc\ub97c \uc904\uc5ec\uc8fc\uae30 \ub54c\ubb38\uc5d0, \ucf54\ub4dc\ub97c \ub354 \uac04\uacb0\ud558\uac8c \uc791\uc131\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n\n\n\n<li><strong>\ucf54\ub4dc \uac00\ub3c5\uc131<\/strong>: \uc81c\ub124\ub9ad \ubdf0\ub294 \uae30\ub2a5\ubcc4\ub85c \ud074\ub798\uc2a4\uac00 \ubd84\ub9ac\ub418\uc5b4 \uc788\uc5b4 \ucf54\ub4dc\ub97c \uc774\ud574\ud558\uae30 \uc27d\uace0, \uc720\uc9c0\ubcf4\uc218\ud558\uae30 \uc6a9\uc774\ud569\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">\uc8fc\uc694 \uc81c\ub124\ub9ad \ubdf0 \uc885\ub958<\/h3>\n\n\n<style>.kb-image4834_1855b6-eb .kb-image-has-overlay:after{opacity:0.3;border-top-left-radius:5px;border-top-right-radius:5px;border-bottom-right-radius:5px;border-bottom-left-radius:5px;}.kb-image4834_1855b6-eb img.kb-img, .kb-image4834_1855b6-eb .kb-img img{border-top-left-radius:5px;border-top-right-radius:5px;border-bottom-right-radius:5px;border-bottom-left-radius:5px;box-shadow:0px 0px 14px 0px rgba(0, 0, 0, 0.2);}<\/style>\n<div class=\"wp-block-kadence-image kb-image4834_1855b6-eb\"><figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"1200\" height=\"607\" src=\"https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/01\/image-16-21.jpg\" alt=\"\uc8fc\uc694 \uc81c\ub124\ub9ad \ubdf0 \uc885\ub958 \ucc38\uace0 \uc774\ubbf8\uc9c0\" class=\"kb-img wp-image-4864\" srcset=\"https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/01\/image-16-21.jpg 1200w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/01\/image-16-21-300x152.jpg 300w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/01\/image-16-21-600x304.jpg 600w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/01\/image-16-21-768x388.jpg 768w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/01\/image-16-21-18x9.jpg 18w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" \/><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><code>DeleteView<\/code><\/strong>: \uac1d\uccb4 \uc0ad\uc81c \uae30\ub2a5\uc744 \uc81c\uacf5\ud558\ub294 \ubdf0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><code>ListView<\/code><\/strong>: \uac1d\uccb4 \ubaa9\ub85d\uc744 \ubcf4\uc5ec\uc8fc\ub294 \ubdf0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><code>DetailView<\/code><\/strong>: \ud2b9\uc815 \uac1d\uccb4\uc758 \uc0c1\uc138 \uc815\ubcf4\ub97c \ubcf4\uc5ec\uc8fc\ub294 \ubdf0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><code>CreateView<\/code><\/strong>: \uac1d\uccb4 \uc0dd\uc131\uc744 \uc704\ud55c \ud3fc\uc744 \uc81c\uacf5\ud558\ub294 \ubdf0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><code>UpdateView<\/code><\/strong>: \uac1d\uccb4 \uc218\uc815\uc744 \uc704\ud55c \ud3fc\uc744 \uc81c\uacf5\ud558\ub294 \ubdf0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4, \uac1d\uccb4 \ubaa9\ub85d\uc744 \ubcf4\uc5ec\uc8fc\ub294 \ubdf0\ub97c \ub9cc\ub4e4 \ub54c\ub294 \uc774\ub807\uac8c \ud560 \uc218 \uc788\uc8e0. \uc774 \uac04\ub2e8\ud55c \ucf54\ub4dc\ub85c Book \ubaa8\ub378\uc758 \ubaa8\ub4e0 \uac1d\uccb4\ub97c \ub9ac\uc2a4\ud2b8\ub85c \ubcf4\uc5ec\uc8fc\ub294 \ubdf0\ub97c \ub9cc\ub4e4 \uc218 \uc788\uc5b4\uc694.<\/p>\n\n\n\n<pre class=\"wp-block-code language-python\"><code>from django.views.generic import ListView\nfrom .models import Book\n\nclass BookListView(ListView):\n    model = Book\n    template_name = 'book_list.html'\n    context_object_name = 'books'<\/code><\/pre>\n\n\n<style>.wp-block-kadence-advancedheading.kt-adv-heading4834_678938-c2, .wp-block-kadence-advancedheading.kt-adv-heading4834_678938-c2[data-kb-block=\"kb-adv-heading4834_678938-c2\"]{font-style:normal;}.wp-block-kadence-advancedheading.kt-adv-heading4834_678938-c2 mark.kt-highlight, .wp-block-kadence-advancedheading.kt-adv-heading4834_678938-c2[data-kb-block=\"kb-adv-heading4834_678938-c2\"] mark.kt-highlight{font-style:normal;color:#f76a0c;-webkit-box-decoration-break:clone;box-decoration-break:clone;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.wp-block-kadence-advancedheading.kt-adv-heading4834_678938-c2 img.kb-inline-image, .wp-block-kadence-advancedheading.kt-adv-heading4834_678938-c2[data-kb-block=\"kb-adv-heading4834_678938-c2\"] img.kb-inline-image{width:150px;vertical-align:baseline;}<\/style>\n<h3 class=\"kt-adv-heading4834_678938-c2 wp-block-kadence-advancedheading\" data-kb-block=\"kb-adv-heading4834_678938-c2\">\ucf54\ub4dc \ud574\uc124<\/h3>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<h5 class=\"wp-block-heading\">1. <code>from django.views.generic import ListView<\/code><\/h5>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Django\uc758 <code>views.generic<\/code> \ubaa8\ub4c8\uc5d0\uc11c <code>ListView<\/code> \ud074\ub798\uc2a4\ub97c \uac00\uc838\uc635\ub2c8\ub2e4.<\/li>\n\n\n\n<li><code>ListView<\/code>\ub294 \uc5ec\ub7ec \uac1d\uccb4\uc758 \ubaa9\ub85d\uc744 \ubcf4\uc5ec\uc8fc\ub294 \uc6f9 \ud398\uc774\uc9c0\ub97c \ub9cc\ub4e4 \ub54c \uc720\uc6a9\ud558\uac8c \uc0ac\uc6a9\ub418\ub294 \uc81c\ub124\ub9ad \ubdf0\uc785\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<h5 class=\"wp-block-heading\">2. <code>from .models import Book<\/code><\/h5>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\ud604\uc7ac \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc758 <code>models<\/code> \ubaa8\ub4c8\uc5d0\uc11c <code>Book<\/code> \ubaa8\ub378\uc744 \uac00\uc838\uc635\ub2c8\ub2e4.<\/li>\n\n\n\n<li><code>Book<\/code> \ubaa8\ub378\uc740 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0 \uc800\uc7a5\ud560 \ucc45 \uc815\ubcf4\ub97c \uc815\uc758\ud558\ub294 \ud074\ub798\uc2a4\uc785\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<h5 class=\"wp-block-heading\">3. <code>class BookListView(ListView):<\/code><\/h5>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>BookListView<\/code>\ub77c\ub294 \uc774\ub984\uc758 \ud074\ub798\uc2a4\ub97c \uc815\uc758\ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li>\uc774 \ud074\ub798\uc2a4\ub294 <code>ListView<\/code> \ud074\ub798\uc2a4\ub97c \uc0c1\uc18d\ubc1b\uc2b5\ub2c8\ub2e4.<\/li>\n\n\n\n<li>\uc989, <code>BookListView<\/code>\ub294 <code>ListView<\/code>\uc758 \uae30\ub2a5\uc744 \ud65c\uc6a9\ud558\uc5ec \ucc45 \ubaa9\ub85d \ud398\uc774\uc9c0\ub97c \ub9cc\ub4dc\ub294 \ubdf0\uac00 \ub429\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<h5 class=\"wp-block-heading\">4. <code>model = Book<\/code><\/h5>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>model<\/code> \uc18d\uc131\uc740 <code>ListView<\/code>\uac00 \uc0ac\uc6a9\ud560 \ubaa8\ub378\uc744 \uc9c0\uc815\ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li>\uc5ec\uae30\uc11c\ub294 <code>Book<\/code> \ubaa8\ub378\uc744 \uc9c0\uc815\ud588\uc73c\ubbc0\ub85c, <code>BookListView<\/code>\ub294 <code>Book<\/code> \ubaa8\ub378\uc5d0 \uc800\uc7a5\ub41c \ucc45 \ubaa9\ub85d\uc744 \ubcf4\uc5ec\uc8fc\ub294 \ud398\uc774\uc9c0\ub97c \uc0dd\uc131\ud569\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<h5 class=\"wp-block-heading\">5. <code>template_name = 'book_list.html'<\/code><\/h5>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>template_name<\/code> \uc18d\uc131\uc740 \ud15c\ud50c\ub9bf \ud30c\uc77c\uc758 \uc774\ub984\uc744 \uc9c0\uc815\ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li>\uc5ec\uae30\uc11c\ub294 <code>book_list.html<\/code> \ud30c\uc77c\uc744 \ud15c\ud50c\ub9bf\uc73c\ub85c \uc0ac\uc6a9\ud558\uc5ec \ucc45 \ubaa9\ub85d \ud398\uc774\uc9c0\ub97c \uad6c\uc131\ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li>\uc774 \ud15c\ud50c\ub9bf \ud30c\uc77c\uc740 <code>Book<\/code> \ubaa8\ub378\uc758 \uac1d\uccb4 \ubaa9\ub85d\uc744 HTML \ud615\uc2dd\uc73c\ub85c \ud45c\uc2dc\ud558\ub294 \uc5ed\ud560\uc744 \ud569\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<h5 class=\"wp-block-heading\">6. <code>context_object_name = 'books'<\/code><\/h5>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>context_object_name<\/code> \uc18d\uc131\uc740 \ud15c\ud50c\ub9bf\uc5d0\uc11c \uc0ac\uc6a9\ud560 \uac1d\uccb4 \ubaa9\ub85d\uc758 \uc774\ub984\uc744 \uc9c0\uc815\ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li>\uae30\ubcf8\uc801\uc73c\ub85c <code>ListView<\/code>\ub294 <code>object_list<\/code>\ub77c\ub294 \uc774\ub984\uc73c\ub85c \uac1d\uccb4 \ubaa9\ub85d\uc744 \ud15c\ud50c\ub9bf\uc5d0 \uc804\ub2ec\ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li>\ud558\uc9c0\ub9cc <code>context_object_name<\/code>\uc744 \uc0ac\uc6a9\ud558\uc5ec \uc6d0\ud558\ub294 \uc774\ub984\uc73c\ub85c \ubcc0\uacbd\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n\n\n\n<li>\uc5ec\uae30\uc11c\ub294 <code>books<\/code>\ub77c\ub294 \uc774\ub984\uc73c\ub85c \uac1d\uccb4 \ubaa9\ub85d\uc744 \ud15c\ud50c\ub9bf\uc5d0 \uc804\ub2ec\ud558\ubbc0\ub85c, \ud15c\ud50c\ub9bf\uc5d0\uc11c <code>{{ books }}<\/code>\uc640 \uac19\uc740 \ubc29\uc2dd\uc73c\ub85c \ucc45 \ubaa9\ub85d\uc5d0 \uc811\uadfc\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n<\/ul>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\">Django Views \uc2ec\ud654 &#8211; \ubbf9\uc2a4\uc778(Mixins) \uc0ac\uc6a9\ud558\uae30<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\ubbf9\uc2a4\uc778(Mixins)\uc740 \ud074\ub798\uc2a4 \uae30\ubc18 \ubdf0(CBV)\uc5d0\uc11c \ucf54\ub4dc\ub97c \uc7ac\uc0ac\uc6a9\ud558\uace0 \uae30\ub2a5\uc744 \ud655\uc7a5\ud558\ub294 \ub370 \uc720\uc6a9\ud55c \ub3c4\uad6c\uc785\ub2c8\ub2e4. \ubbf9\uc2a4\uc778\uc740 \ud2b9\uc815 \uae30\ub2a5\uc744 \uc218\ud589\ud558\ub294 \uc791\uc740 \ud074\ub798\uc2a4 \uc870\uac01\uc73c\ub85c, \ub2e4\ub978 \ud074\ub798\uc2a4\uc5d0 \uc11e\uc5ec(mix in) \uc0ac\uc6a9\ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\ubbf9\uc2a4\uc778\uc758 \uc7a5\uc810<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\ucf54\ub4dc \uc7ac\uc0ac\uc6a9\uc131<\/strong>: \ubbf9\uc2a4\uc778\uc744 \uc0ac\uc6a9\ud558\uba74 \uacf5\ud1b5 \uae30\ub2a5\uc744 \uc5ec\ub7ec \ud074\ub798\uc2a4\uc5d0\uc11c \uc7ac\uc0ac\uc6a9\ud560 \uc218 \uc788\uc5b4 \ucf54\ub4dc \uc911\ubcf5\uc744 \uc904\uc774\uace0 \uc720\uc9c0\ubcf4\uc218\uc131\uc744 \ud5a5\uc0c1\uc2dc\ud0b5\ub2c8\ub2e4.<\/li>\n\n\n\n<li><strong>\ucf54\ub4dc \uac00\ub3c5\uc131<\/strong>: \uae30\ub2a5\uc744 \ubbf9\uc2a4\uc778\uc73c\ub85c \ubd84\ub9ac\ud558\uba74 \ud074\ub798\uc2a4\uc758 \uc5ed\ud560\uc744 \uba85\ud655\ud558\uac8c \ud30c\uc545\ud558\uae30 \uc26c\uc6cc\uc838 \ucf54\ub4dc \uac00\ub3c5\uc131\uc774 \ub192\uc544\uc9d1\ub2c8\ub2e4.<\/li>\n\n\n\n<li><strong>\uc720\uc5f0\uc131<\/strong>: \ud544\uc694\ud55c \uae30\ub2a5\uc744 \uac00\uc9c4 \ubbf9\uc2a4\uc778\ub4e4\uc744 \uc870\ud569\ud558\uc5ec \ub2e4\uc591\ud55c \uae30\ub2a5\uc744 \uac00\uc9c4 \ud074\ub798\uc2a4\ub97c \uc27d\uac8c \ub9cc\ub4e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\ubbf9\uc2a4\uc778\uc744 \uc0ac\uc6a9\ud558\uba74 \ubdf0\uc5d0 \ucd94\uac00 \uae30\ub2a5\uc744 \uc27d\uac8c \ub123\uc744 \uc218 \uc788\uc5b4\uc694. \uc608\ub97c \ub4e4\uc5b4, \ub85c\uadf8\uc778\uc774 \ud544\uc694\ud55c \ubdf0\ub97c \ub9cc\ub4e4 \ub54c\ub294 \uc544\ub798\uc640 \uac19\uc2b5\ub2c8\ub2e4. \uc774 \ubdf0\ub294 \ub85c\uadf8\uc778\ud55c \uc0ac\uc6a9\uc790\ub9cc \uc811\uadfc\ud560 \uc218 \uc788\uc5b4\uc694.<\/p>\n\n\n\n<pre class=\"wp-block-code language-python\"><code>from django.contrib.auth.mixins import LoginRequiredMixin\nfrom django.views.generic import DetailView\nfrom .models import PrivateDocument\n\nclass PrivateDocumentView(LoginRequiredMixin, DetailView):\n    model = PrivateDocument\n    template_name = 'private_document.html'<\/code><\/pre>\n\n\n<style>.wp-block-kadence-advancedheading.kt-adv-heading4834_315118-ce, .wp-block-kadence-advancedheading.kt-adv-heading4834_315118-ce[data-kb-block=\"kb-adv-heading4834_315118-ce\"]{font-style:normal;}.wp-block-kadence-advancedheading.kt-adv-heading4834_315118-ce mark.kt-highlight, .wp-block-kadence-advancedheading.kt-adv-heading4834_315118-ce[data-kb-block=\"kb-adv-heading4834_315118-ce\"] mark.kt-highlight{font-style:normal;color:#f76a0c;-webkit-box-decoration-break:clone;box-decoration-break:clone;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.wp-block-kadence-advancedheading.kt-adv-heading4834_315118-ce img.kb-inline-image, .wp-block-kadence-advancedheading.kt-adv-heading4834_315118-ce[data-kb-block=\"kb-adv-heading4834_315118-ce\"] img.kb-inline-image{width:150px;vertical-align:baseline;}<\/style>\n<h3 class=\"kt-adv-heading4834_315118-ce wp-block-kadence-advancedheading\" data-kb-block=\"kb-adv-heading4834_315118-ce\">\ucf54\ub4dc \ud574\uc124<\/h3>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<h5 class=\"wp-block-heading\">1. <code>from django.contrib.auth.mixins import LoginRequiredMixin<\/code><\/h5>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Django\uc758 <code>contrib.auth.mixins<\/code> \ubaa8\ub4c8\uc5d0\uc11c <code>LoginRequiredMixin<\/code>\uc744 \uac00\uc838\uc635\ub2c8\ub2e4.<\/li>\n\n\n\n<li>Mixin\uc740 \ud074\ub798\uc2a4\uc5d0 \uae30\ub2a5\uc744 \ucd94\uac00\ud558\ub294 \ub370 \uc0ac\uc6a9\ub418\ub294 \ud074\ub798\uc2a4\uc785\ub2c8\ub2e4.<\/li>\n\n\n\n<li><code>LoginRequiredMixin<\/code>\uc740 \ubdf0\uc5d0 \ub85c\uadf8\uc778 \uc5ec\ubd80\ub97c \ud655\uc778\ud558\ub294 \uae30\ub2a5\uc744 \ucd94\uac00\ud569\ub2c8\ub2e4. \uc989, \ub85c\uadf8\uc778\ud55c \uc0ac\uc6a9\uc790\ub9cc \ud574\ub2f9 \ubdf0\uc5d0 \uc811\uadfc\ud560 \uc218 \uc788\ub3c4\ub85d \uc81c\ud55c\ud569\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<h5 class=\"wp-block-heading\">2. <code>from django.views.generic import DetailView<\/code><\/h5>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Django\uc758 <code>views.generic<\/code> \ubaa8\ub4c8\uc5d0\uc11c <code>DetailView<\/code>\ub97c \uac00\uc838\uc635\ub2c8\ub2e4.<\/li>\n\n\n\n<li><code>DetailView<\/code>\ub294 \ud2b9\uc815 \uac1d\uccb4\uc758 \uc0c1\uc138 \uc815\ubcf4\ub97c \ubcf4\uc5ec\uc8fc\ub294 \uc6f9 \ud398\uc774\uc9c0\ub97c \ub9cc\ub4e4 \ub54c \uc720\uc6a9\ud558\uac8c \uc0ac\uc6a9\ub418\ub294 \uc81c\ub124\ub9ad \ubdf0\uc785\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<h5 class=\"wp-block-heading\">3. <code>from .models import PrivateDocument<\/code><\/h5>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\ud604\uc7ac \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc758 <code>models<\/code> \ubaa8\ub4c8\uc5d0\uc11c <code>PrivateDocument<\/code> \ubaa8\ub378\uc744 \uac00\uc838\uc635\ub2c8\ub2e4.<\/li>\n\n\n\n<li><code>PrivateDocument<\/code> \ubaa8\ub378\uc740 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0 \uc800\uc7a5\ud560 \uac1c\uc778 \ubb38\uc11c \uc815\ubcf4\ub97c \uc815\uc758\ud558\ub294 \ud074\ub798\uc2a4\uc785\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<h5 class=\"wp-block-heading\">4. <code>class PrivateDocumentView(LoginRequiredMixin, DetailView):<\/code><\/h5>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>PrivateDocumentView<\/code>\ub77c\ub294 \uc774\ub984\uc758 \ud074\ub798\uc2a4\ub97c \uc815\uc758\ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li>\uc774 \ud074\ub798\uc2a4\ub294 <code>LoginRequiredMixin<\/code>\uacfc <code>DetailView<\/code>\ub97c \uc0c1\uc18d\ubc1b\uc2b5\ub2c8\ub2e4.<\/li>\n\n\n\n<li>\ub2e4\uc911 \uc0c1\uc18d\uc744 \ud1b5\ud574 <code>PrivateDocumentView<\/code>\ub294 \ub85c\uadf8\uc778 \ud544\uc218 \uae30\ub2a5\uacfc \uc0c1\uc138 \ud398\uc774\uc9c0 \ubcf4\uae30 \uae30\ub2a5\uc744 \ubaa8\ub450 \uac16\uac8c \ub429\ub2c8\ub2e4.<\/li>\n\n\n\n<li>\uc0c1\uc18d \uc21c\uc11c\uac00 \uc911\uc694\ud569\ub2c8\ub2e4. <code>LoginRequiredMixin<\/code>\uc774 \uba3c\uc800 \uc640\uc57c <code>DetailView<\/code>\uc758 \uae30\ub2a5\uc774 \ub85c\uadf8\uc778 \ud655\uc778 \ud6c4\uc5d0 \uc2e4\ud589\ub429\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<h5 class=\"wp-block-heading\">5. <code>model = PrivateDocument<\/code><\/h5>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>model<\/code> \uc18d\uc131\uc740 <code>DetailView<\/code>\uac00 \uc0ac\uc6a9\ud560 \ubaa8\ub378\uc744 \uc9c0\uc815\ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li>\uc5ec\uae30\uc11c\ub294 <code>PrivateDocument<\/code> \ubaa8\ub378\uc744 \uc9c0\uc815\ud588\uc73c\ubbc0\ub85c, <code>PrivateDocumentView<\/code>\ub294 <code>PrivateDocument<\/code> \ubaa8\ub378\uc5d0 \uc800\uc7a5\ub41c \ud2b9\uc815 \uac1c\uc778 \ubb38\uc11c\uc758 \uc0c1\uc138 \uc815\ubcf4\ub97c \ubcf4\uc5ec\uc8fc\ub294 \ud398\uc774\uc9c0\ub97c \uc0dd\uc131\ud569\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<h5 class=\"wp-block-heading\">6. <code>template_name = 'private_document.html'<\/code><\/h5>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>template_name<\/code> \uc18d\uc131\uc740 \ud15c\ud50c\ub9bf \ud30c\uc77c\uc758 \uc774\ub984\uc744 \uc9c0\uc815\ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li>\uc5ec\uae30\uc11c\ub294 <code>private_document.html<\/code> \ud30c\uc77c\uc744 \ud15c\ud50c\ub9bf\uc73c\ub85c \uc0ac\uc6a9\ud558\uc5ec \uac1c\uc778 \ubb38\uc11c \uc0c1\uc138 \ud398\uc774\uc9c0\ub97c \uad6c\uc131\ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li>\uc774 \ud15c\ud50c\ub9bf \ud30c\uc77c\uc740 <code>PrivateDocument<\/code> \ubaa8\ub378\uc758 \uac1d\uccb4 \uc815\ubcf4\ub97c HTML \ud615\uc2dd\uc73c\ub85c \ud45c\uc2dc\ud558\ub294 \uc5ed\ud560\uc744 \ud569\ub2c8\ub2e4.<\/li>\n<\/ul>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\">Django Views \uc2ec\ud654 &#8211; \ucee4\uc2a4\ud140 \ubbf8\ub4e4\uc6e8\uc5b4 \ub9cc\ub4e4\uae30<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\ubbf8\ub4e4\uc6e8\uc5b4(Middleware)\ub294 \uc6f9 \uc694\uccad\uacfc \uc751\ub2f5\uc744 \ucc98\ub9ac\ud558\ub294 \uacfc\uc815\uc5d0\uc11c \ud2b9\uc815 \uae30\ub2a5\uc744 \uc218\ud589\ud558\ub294 \ud568\uc218 \ub610\ub294 \ud074\ub798\uc2a4\uc785\ub2c8\ub2e4. Django\uc5d0\uc11c \ubbf8\ub4e4\uc6e8\uc5b4\ub294 \uc694\uccad\uc774 \ubdf0\uc5d0 \ub3c4\ub2ec\ud558\uae30 \uc804, \uadf8\ub9ac\uace0 \uc751\ub2f5\uc774 \ud074\ub77c\uc774\uc5b8\ud2b8\uc5d0\uac8c \uc804\uc1a1\ub418\uae30 \uc804\uc5d0 \uc2e4\ud589\ub429\ub2c8\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\ubbf8\ub4e4\uc6e8\uc5b4\uc758 \uc5ed\ud560<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\uc694\uccad \ucc98\ub9ac<\/strong>: \uc694\uccad \uac1d\uccb4\ub97c \uc218\uc815\ud558\uac70\ub098, \ud2b9\uc815 \uc870\uac74\uc744 \ub9cc\uc871\ud558\uc9c0 \uc54a\ub294 \uc694\uccad\uc744 \ucc28\ub2e8\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n\n\n\n<li><strong>\uc751\ub2f5 \ucc98\ub9ac<\/strong>: \uc751\ub2f5 \uac1d\uccb4\ub97c \uc218\uc815\ud558\uac70\ub098, \ud544\uc694\ud55c \ud5e4\ub354\ub97c \ucd94\uac00\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n\n\n\n<li><strong>\uc804\uc5ed\uc801\uc778 \uae30\ub2a5 \ucc98\ub9ac<\/strong>: \ub85c\uae45, \ubcf4\uc548, \uce90\uc2f1 \ub4f1 \uc6f9 \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \uc804\uccb4\uc5d0 \uc801\uc6a9\ub418\ub294 \uae30\ub2a5\uc744 \uad6c\ud604\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\ubbf8\ub4e4\uc6e8\uc5b4\ub97c \uc0ac\uc6a9\ud558\uba74 \uc694\uccad\/\uc751\ub2f5 \uc0ac\uc774\ud074\uc5d0 \ucd94\uac00 \ub85c\uc9c1\uc744 \ub123\uc744 \uc218 \uc788\uc5b4\uc694. \uac04\ub2e8\ud55c \ub85c\uae45 \ubbf8\ub4e4\uc6e8\uc5b4\ub97c \ub9cc\ub4e4\uc5b4\ubcfc\uae4c\uc694? \uc544\ub798\uc758 \ubbf8\ub4e4\uc6e8\uc5b4\ub294 \ubaa8\ub4e0 \uc694\uccad\uacfc \uc751\ub2f5\uc744 \ub85c\uae45\ud574\uc694.<\/p>\n\n\n\n<pre class=\"wp-block-code language-python\"><code>class SimpleLoggingMiddleware:\n    def __init__(self, get_response):\n        self.get_response = get_response\n\n    def __call__(self, request):\n        print(f\"\uc694\uccad \ubc1b\uc74c: {request.path}\")\n        response = self.get_response(request)\n        print(f\"\uc751\ub2f5 \ubcf4\ub0c4: {response.status_code}\")\n        return response<\/code><\/pre>\n\n\n<style>.wp-block-kadence-advancedheading.kt-adv-heading4834_5b8593-7b, .wp-block-kadence-advancedheading.kt-adv-heading4834_5b8593-7b[data-kb-block=\"kb-adv-heading4834_5b8593-7b\"]{font-style:normal;}.wp-block-kadence-advancedheading.kt-adv-heading4834_5b8593-7b mark.kt-highlight, .wp-block-kadence-advancedheading.kt-adv-heading4834_5b8593-7b[data-kb-block=\"kb-adv-heading4834_5b8593-7b\"] mark.kt-highlight{font-style:normal;color:#f76a0c;-webkit-box-decoration-break:clone;box-decoration-break:clone;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.wp-block-kadence-advancedheading.kt-adv-heading4834_5b8593-7b img.kb-inline-image, .wp-block-kadence-advancedheading.kt-adv-heading4834_5b8593-7b[data-kb-block=\"kb-adv-heading4834_5b8593-7b\"] img.kb-inline-image{width:150px;vertical-align:baseline;}<\/style>\n<h3 class=\"kt-adv-heading4834_5b8593-7b wp-block-kadence-advancedheading\" data-kb-block=\"kb-adv-heading4834_5b8593-7b\">\ucf54\ub4dc \ud574\uc124<\/h3>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<h5 class=\"wp-block-heading\">1. <code>class SimpleLoggingMiddleware:<\/code><\/h5>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>SimpleLoggingMiddleware<\/code>\ub77c\ub294 \uc774\ub984\uc758 \ud074\ub798\uc2a4\ub97c \uc815\uc758\ud569\ub2c8\ub2e4. \uc774 \ud074\ub798\uc2a4\uac00 \ubbf8\ub4e4\uc6e8\uc5b4\uc758 \uc5ed\ud560\uc744 \uc218\ud589\ud569\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<h5 class=\"wp-block-heading\">2. <code>def __init__(self, get_response):<\/code><\/h5>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>__init__<\/code> \uba54\uc11c\ub4dc\ub294 \ud074\ub798\uc2a4\uac00 \uc778\uc2a4\ud134\uc2a4\ud654\ub420 \ub54c \ud638\ucd9c\ub418\ub294 \uc0dd\uc131\uc790\uc785\ub2c8\ub2e4.<\/li>\n\n\n\n<li><code>get_response<\/code>\ub294 \ub2e4\uc74c \ubbf8\ub4e4\uc6e8\uc5b4 \ub610\ub294 \ubdf0 \ud568\uc218\ub97c \uac00\ub9ac\ud0a4\ub294 callable \uac1d\uccb4\uc785\ub2c8\ub2e4. Django \ubbf8\ub4e4\uc6e8\uc5b4 \uccb4\uc778\uc5d0\uc11c \ub2e4\uc74c \ub2e8\uacc4\ub85c \uc694\uccad\uc744 \uc804\ub2ec\ud558\ub294 \uc5ed\ud560\uc744 \ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li><code>self.get_response = get_response<\/code>\ub294 \uc804\ub2ec\ubc1b\uc740 <code>get_response<\/code> \ud568\uc218\ub97c \ud074\ub798\uc2a4\uc758 \uc18d\uc131\uc73c\ub85c \uc800\uc7a5\ud569\ub2c8\ub2e4. \uc774\ub807\uac8c \uc800\uc7a5\ud574\ub450\uba74 <code>__call__<\/code> \uba54\uc11c\ub4dc\uc5d0\uc11c \ub2e4\uc74c \ub2e8\uacc4\uc758 \ubbf8\ub4e4\uc6e8\uc5b4\ub098 \ubdf0\ub97c \ud638\ucd9c\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<h5 class=\"wp-block-heading\">3. <code>def __call__(self, request):<\/code><\/h5>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>__call__<\/code> \uba54\uc11c\ub4dc\ub294 \ubbf8\ub4e4\uc6e8\uc5b4\uac00 \ud638\ucd9c\ub420 \ub54c \uc2e4\ud589\ub418\ub294 \uba54\uc11c\ub4dc\uc785\ub2c8\ub2e4. \uc774 \uba54\uc11c\ub4dc\uac00 \ud575\uc2ec\uc801\uc778 \ubbf8\ub4e4\uc6e8\uc5b4 \ub85c\uc9c1\uc744 \uc218\ud589\ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li><code>request<\/code>\ub294 HTTP \uc694\uccad \uac1d\uccb4\uc785\ub2c8\ub2e4. \uc694\uccad\uc5d0 \ub300\ud55c \ub2e4\uc591\ud55c \uc815\ubcf4\ub97c \ub2f4\uace0 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<h5 class=\"wp-block-heading\">4. <code>print(f\"\uc694\uccad \ubc1b\uc74c: {request.path}\")<\/code><\/h5>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\uc694\uccad\uc774 \ub4e4\uc5b4\uc654\uc744 \ub54c \uc694\uccad \uacbd\ub85c(<code>request.path<\/code>)\ub97c \ucf58\uc194\uc5d0 \ucd9c\ub825\ud569\ub2c8\ub2e4. f-string\uc744 \uc0ac\uc6a9\ud558\uc5ec \ubb38\uc790\uc5f4 \ud3ec\ub9e4\ud305\uc744 \uac04\uacb0\ud558\uac8c \ucc98\ub9ac\ud588\uc2b5\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<h5 class=\"wp-block-heading\">5. <code>response = self.get_response(request)<\/code><\/h5>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>self.get_response(request)<\/code>\ub294 \ub2e4\uc74c \ubbf8\ub4e4\uc6e8\uc5b4\ub098 \ubdf0 \ud568\uc218\ub97c \ud638\ucd9c\ud558\uace0, \uadf8 \uacb0\uacfc\ub97c <code>response<\/code> \ubcc0\uc218\uc5d0 \uc800\uc7a5\ud569\ub2c8\ub2e4. \uc774 \ubd80\ubd84\uc774 \uc694\uccad\uc744 \ub2e4\uc74c \ub2e8\uacc4\ub85c \uc804\ub2ec\ud558\ub294 \uc911\uc694\ud55c \ubd80\ubd84\uc785\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<h5 class=\"wp-block-heading\">6. <code>print(f\"\uc751\ub2f5 \ubcf4\ub0c4: {response.status_code}\")<\/code><\/h5>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\uc751\ub2f5\uc774 \ud074\ub77c\uc774\uc5b8\ud2b8\uc5d0\uac8c \ubcf4\ub0b4\uc9c0\uae30 \uc804\uc5d0 \uc751\ub2f5 \uc0c1\ud0dc \ucf54\ub4dc(<code>response.status_code<\/code>)\ub97c \ucf58\uc194\uc5d0 \ucd9c\ub825\ud569\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<h5 class=\"wp-block-heading\">7. <code>return response<\/code><\/h5>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>response<\/code> \uac1d\uccb4\ub97c \ubc18\ud658\ud569\ub2c8\ub2e4. \uc774 \uac1d\uccb4\ub294 \ub2e4\uc74c \ubbf8\ub4e4\uc6e8\uc5b4\ub098 \ubdf0\uc5d0\uc11c \uc0dd\uc131\ub41c \uc751\ub2f5 \uac1d\uccb4\uc774\uac70\ub098, \uc774\ud6c4 \ubbf8\ub4e4\uc6e8\uc5b4\uc5d0\uc11c \uc218\uc815\ub41c \uc751\ub2f5 \uac1d\uccb4\uc77c \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ucd5c\uc885\uc801\uc73c\ub85c \ud074\ub77c\uc774\uc5b8\ud2b8\uc5d0\uac8c \uc804\ub2ec\ub420 \uc751\ub2f5\uc785\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\uc694\uc57d:<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>SimpleLoggingMiddleware<\/code>\ub294 \uc694\uccad\uc774 \ub4e4\uc5b4\uc62c \ub54c\uc640 \uc751\ub2f5\uc774 \ubcf4\ub0b4\uc9c8 \ub54c \ub85c\uadf8\ub97c \ucd9c\ub825\ud558\ub294 \uac04\ub2e8\ud55c \ubbf8\ub4e4\uc6e8\uc5b4\uc785\ub2c8\ub2e4. <code>__call__<\/code> \uba54\uc11c\ub4dc \uc548\uc5d0\uc11c \uc694\uccad \uacbd\ub85c\ub97c \ucd9c\ub825\ud558\uace0, \ub2e4\uc74c \ub2e8\uacc4\uc758 \ubbf8\ub4e4\uc6e8\uc5b4\ub098 \ubdf0\ub97c \ud638\ucd9c\ud55c \ud6c4, \uc751\ub2f5 \uc0c1\ud0dc \ucf54\ub4dc\ub97c \ucd9c\ub825\ud569\ub2c8\ub2e4. \uc774 \ubbf8\ub4e4\uc6e8\uc5b4\ub97c <code>MIDDLEWARE<\/code> \uc124\uc815\uc5d0 \ub4f1\ub85d\ud558\uba74 \ubaa8\ub4e0 \uc694\uccad\uacfc \uc751\ub2f5\uc5d0 \ub300\ud55c \ub85c\uae45\uc744 \uc218\ud589\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\">Django Views \uc2ec\ud654 &#8211; \ubdf0 \ub370\ucf54\ub808\uc774\ud130 \ud65c\uc6a9\ud558\uae30<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\ub370\ucf54\ub808\uc774\ud130(Decorator)\ub294 \ud30c\uc774\uc36c\uc5d0\uc11c \ud568\uc218\ub098 \ud074\ub798\uc2a4\ub97c \uac10\uc2f8\uc11c \uae30\ub2a5\uc744 \ucd94\uac00\ud558\uac70\ub098 \ubcc0\uacbd\ud560 \ub54c \uc0ac\uc6a9\ud558\ub294 \uae30\ub2a5\uc785\ub2c8\ub2e4. \ubdf0 \ub370\ucf54\ub808\uc774\ud130\ub97c \uc0ac\uc6a9\ud558\uba74 \ubdf0 \ud568\uc218\uc5d0 \ucd94\uac00 \uae30\ub2a5\uc744 \uc27d\uac8c \uc801\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\ubdf0 \ub370\ucf54\ub808\uc774\ud130\uc758 \uc7a5\uc810<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\ucf54\ub4dc \uc7ac\uc0ac\uc6a9\uc131<\/strong>: \ub370\ucf54\ub808\uc774\ud130\ub97c \uc0ac\uc6a9\ud558\uba74 \uacf5\ud1b5 \uae30\ub2a5\uc744 \uc5ec\ub7ec \ubdf0\uc5d0 \uc7ac\uc0ac\uc6a9\ud560 \uc218 \uc788\uc5b4 \ucf54\ub4dc \uc911\ubcf5\uc744 \uc904\uc774\uace0 \uc720\uc9c0\ubcf4\uc218\uc131\uc744 \ud5a5\uc0c1\uc2dc\ud0b5\ub2c8\ub2e4.<\/li>\n\n\n\n<li><strong>\ucf54\ub4dc \uac00\ub3c5\uc131<\/strong>: \ub370\ucf54\ub808\uc774\ud130\ub97c \uc0ac\uc6a9\ud558\uba74 \ubdf0\uc758 \ud575\uc2ec \ub85c\uc9c1\uacfc \ubd80\uac00 \uae30\ub2a5\uc744 \ubd84\ub9ac\ud558\uc5ec \ucf54\ub4dc \uac00\ub3c5\uc131\uc744 \ub192\uc785\ub2c8\ub2e4.<\/li>\n\n\n\n<li><strong>\uc720\uc5f0\uc131<\/strong>: \ub370\ucf54\ub808\uc774\ud130\ub97c \uc870\ud569\ud558\uc5ec \ub2e4\uc591\ud55c \uae30\ub2a5\uc744 \uac00\uc9c4 \ubdf0\ub97c \uc27d\uac8c \ub9cc\ub4e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\ub370\ucf54\ub808\uc774\ud130\ub97c \uc0ac\uc6a9\ud558\uba74 \ubdf0\uc5d0 \ucd94\uac00 \uae30\ub2a5\uc744 \uc27d\uac8c \ub123\uc744 \uc218 \uc788\uc5b4\uc694. \uc608\ub97c \ub4e4\uc5b4, \uce90\uc2dc\ub97c \uc801\uc6a9\ud558\ub294 \ub370\ucf54\ub808\uc774\ud130\ub97c \ub9cc\ub4e4\uc5b4\ubcfc\uae4c\uc694?<\/p>\n\n\n\n<pre class=\"wp-block-code language-python\"><code>from django.views.decorators.cache import cache_page\n\n@cache_page(60 * 15)  # 15\ubd84 \ub3d9\uc548 \uce90\uc2dc\ndef my_view(request):\n    # \ubdf0 \ub85c\uc9c1\n    return HttpResponse(\"\uc774 \uc751\ub2f5\uc740 15\ubd84 \ub3d9\uc548 \uce90\uc2dc\ub3fc\uc694\")<\/code><\/pre>\n\n\n<style>.wp-block-kadence-advancedheading.kt-adv-heading4834_dd93fb-ca, .wp-block-kadence-advancedheading.kt-adv-heading4834_dd93fb-ca[data-kb-block=\"kb-adv-heading4834_dd93fb-ca\"]{font-style:normal;}.wp-block-kadence-advancedheading.kt-adv-heading4834_dd93fb-ca mark.kt-highlight, .wp-block-kadence-advancedheading.kt-adv-heading4834_dd93fb-ca[data-kb-block=\"kb-adv-heading4834_dd93fb-ca\"] mark.kt-highlight{font-style:normal;color:#f76a0c;-webkit-box-decoration-break:clone;box-decoration-break:clone;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.wp-block-kadence-advancedheading.kt-adv-heading4834_dd93fb-ca img.kb-inline-image, .wp-block-kadence-advancedheading.kt-adv-heading4834_dd93fb-ca[data-kb-block=\"kb-adv-heading4834_dd93fb-ca\"] img.kb-inline-image{width:150px;vertical-align:baseline;}<\/style>\n<h3 class=\"kt-adv-heading4834_dd93fb-ca wp-block-kadence-advancedheading\" data-kb-block=\"kb-adv-heading4834_dd93fb-ca\">\ucf54\ub4dc \ud574\uc124<\/h3>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<h5 class=\"wp-block-heading\">1. <code>from django.views.decorators.cache import cache_page<\/code><\/h5>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Django\uc758 <code>views.decorators.cache<\/code> \ubaa8\ub4c8\uc5d0\uc11c <code>cache_page<\/code> \ub370\ucf54\ub808\uc774\ud130\ub97c \uac00\uc838\uc635\ub2c8\ub2e4.<\/li>\n\n\n\n<li><code>cache_page<\/code> \ub370\ucf54\ub808\uc774\ud130\ub294 \ubdf0\uc758 \uacb0\uacfc\ub97c \uc9c0\uc815\ub41c \uc2dc\uac04 \ub3d9\uc548 \uce90\uc2dc\ud558\ub294 \uae30\ub2a5\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<h5 class=\"wp-block-heading\">2. <code>@cache_page(60 * 15) # 15\ubd84 \ub3d9\uc548 \uce90\uc2dc<\/code><\/h5>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>@cache_page(60 * 15)<\/code>\ub294 <code>my_view<\/code> \ud568\uc218\uc5d0 <code>cache_page<\/code> \ub370\ucf54\ub808\uc774\ud130\ub97c \uc801\uc6a9\ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li><code>60 * 15<\/code>\ub294 15\ubd84\uc744 \ucd08 \ub2e8\uc704\ub85c \ub098\ud0c0\ub0b4\ub294 \uac12\uc785\ub2c8\ub2e4. \uc989, \ubdf0\uc758 \uacb0\uacfc\ub97c 15\ubd84 \ub3d9\uc548 \uce90\uc2dc\ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li><code># 15\ubd84 \ub3d9\uc548 \uce90\uc2dc<\/code>\ub294 \uc8fc\uc11d\uc73c\ub85c, \ucf54\ub4dc\uc758 \uc758\ubbf8\ub97c \uc124\uba85\ud569\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<h5 class=\"wp-block-heading\">3. <code>def my_view(request):<\/code><\/h5>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>my_view<\/code>\ub77c\ub294 \uc774\ub984\uc758 \ubdf0 \ud568\uc218\ub97c \uc815\uc758\ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li>\uc774 \ud568\uc218\ub294 HTTP \uc694\uccad \uac1d\uccb4(<code>request<\/code>)\ub97c \uc778\uc790\ub85c \ubc1b\uc2b5\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<h5 class=\"wp-block-heading\">4. <code># \ubdf0 \ub85c\uc9c1<\/code><\/h5>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\uc8fc\uc11d\uc73c\ub85c, \ubdf0\uc758 \ud575\uc2ec \ub85c\uc9c1\uc774 \ub4e4\uc5b4\uac08 \ubd80\ubd84\uc744 \ub098\ud0c0\ub0c5\ub2c8\ub2e4.<\/li>\n\n\n\n<li>\uc2e4\uc81c \ubdf0\uc5d0\uc11c\ub294 \uc694\uccad \ucc98\ub9ac, \ub370\uc774\ud130\ubca0\uc774\uc2a4 \uc870\ud68c, \ud15c\ud50c\ub9bf \ub80c\ub354\ub9c1 \ub4f1\uc758 \uc791\uc5c5\uc744 \uc218\ud589\ud569\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<h5 class=\"wp-block-heading\">5. <code>return HttpResponse(\"\uc774 \uc751\ub2f5\uc740 15\ubd84 \ub3d9\uc548 \uce90\uc2dc\ub3fc\uc694\")<\/code><\/h5>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>HttpResponse<\/code> \uac1d\uccb4\ub97c \uc0dd\uc131\ud558\uace0, \uc778\uc790\ub85c &#8220;\uc774 \uc751\ub2f5\uc740 15\ubd84 \ub3d9\uc548 \uce90\uc2dc\ub3fc\uc694&#8221;\ub77c\ub294 \ubb38\uc790\uc5f4\uc744 \uc804\ub2ec\ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li>\uc774 \ubb38\uc790\uc5f4\uc740 HTTP \uc751\ub2f5\uc758 \ubcf8\ubb38(body)\uc5d0 \ub2f4\uaca8\uc11c \ud074\ub77c\uc774\uc5b8\ud2b8\uc5d0\uac8c \uc804\uc1a1\ub429\ub2c8\ub2e4.<\/li>\n\n\n\n<li><code>return<\/code> \ubb38\uc740 <code>HttpResponse<\/code> \uac1d\uccb4\ub97c \ubc18\ud658\ud569\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<h5 class=\"wp-block-heading\">\uc694\uc57d<\/h5>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\uc704 \ucf54\ub4dc\ub294 <code>my_view<\/code> \ubdf0 \ud568\uc218\uc5d0 <code>cache_page<\/code> \ub370\ucf54\ub808\uc774\ud130\ub97c \uc801\uc6a9\ud558\uc5ec 15\ubd84 \ub3d9\uc548 \ubdf0\uc758 \uacb0\uacfc\ub97c \uce90\uc2dc\ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li>\uc774\ub807\uac8c \ud558\uba74 \ub3d9\uc77c\ud55c \uc694\uccad\uc774 15\ubd84 \uc774\ub0b4\uc5d0 \ub2e4\uc2dc \ub4e4\uc5b4\uc654\uc744 \ub54c, \ubdf0 \ud568\uc218\ub97c \ub2e4\uc2dc \uc2e4\ud589\ud558\uc9c0 \uc54a\uace0 \uce90\uc2dc\ub41c \uacb0\uacfc\ub97c \ubc14\ub85c \ubc18\ud658\ud558\uc5ec \uc131\ub2a5\uc744 \ud5a5\uc0c1\uc2dc\ud0ac \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n<\/ul>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\">Django Views \uc2ec\ud654 &#8211; \ube44\ub3d9\uae30 \ubdf0 \uc0ac\uc6a9\ud558\uae30<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uae30\uc874\uc758 \ub3d9\uae30 \ubdf0\ub294 \uc694\uccad\uc744 \ucc98\ub9ac\ud558\ub294 \ub3d9\uc548 \ub2e4\ub978 \uc791\uc5c5\uc744 \uc218\ud589\ud560 \uc218 \uc5c6\uc5c8\uc2b5\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4, \ub370\uc774\ud130\ubca0\uc774\uc2a4 \ucffc\ub9ac\ub97c \uc218\ud589\ud558\ub294 \ub3d9\uc548\uc5d0\ub294 \ub2e4\ub978 \uc694\uccad\uc744 \ucc98\ub9ac\ud560 \uc218 \uc5c6\uc5b4 \ubcd1\ubaa9 \ud604\uc0c1\uc774 \ubc1c\uc0dd\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ube44\ub3d9\uae30 \ubdf0\ub294 \uc774\ub7ec\ud55c \ubb38\uc81c\ub97c \ud574\uacb0\ud558\uae30 \uc704\ud574 \ub3c4\uc785\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \ube44\ub3d9\uae30 \ubdf0\ub294 I\/O \uc791\uc5c5\uc774 \uc644\ub8cc\ub420 \ub54c\uae4c\uc9c0 \uae30\ub2e4\ub9ac\ub294 \ub3d9\uc548 \ub2e4\ub978 \uc791\uc5c5\uc744 \uc218\ud589\ud560 \uc218 \uc788\ub3c4\ub85d \ud569\ub2c8\ub2e4. \uc774\ub97c \ud1b5\ud574 \uc5ec\ub7ec \uc694\uccad\uc744 \ub3d9\uc2dc\uc5d0 \ucc98\ub9ac\ud558\uc5ec \uc804\uccb4\uc801\uc778 \ucc98\ub9ac\ub7c9\uc744 \ub298\ub9b4 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\ube44\ub3d9\uae30 \ubdf0\uc758 \uc7a5\uc810<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\ud5a5\uc0c1\ub41c \uc131\ub2a5<\/strong>: I\/O \ubc14\uc6b4\ub4dc \uc791\uc5c5\uc758 \ubcd1\ubaa9 \ud604\uc0c1\uc744 \uc904\uc5ec \uc804\uccb4\uc801\uc778 \ucc98\ub9ac\ub7c9\uc744 \ud5a5\uc0c1\uc2dc\ud0b5\ub2c8\ub2e4.<\/li>\n\n\n\n<li><strong>\uc790\uc6d0 \ud6a8\uc728\uc131<\/strong>: I\/O \uc791\uc5c5 \ub300\uae30 \uc2dc\uac04\uc744 \ud65c\uc6a9\ud558\uc5ec CPU\uc640 \uba54\ubaa8\ub9ac \uc790\uc6d0\uc744 \ud6a8\uc728\uc801\uc73c\ub85c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n\n\n\n<li><strong>\uc751\ub2f5 \uc2dc\uac04 \ub2e8\ucd95<\/strong>: \uc0ac\uc6a9\uc790\ub294 I\/O \uc791\uc5c5\uc774 \uc644\ub8cc\ub420 \ub54c\uae4c\uc9c0 \uae30\ub2e4\ub9ac\uc9c0 \uc54a\uace0 \ub2e4\ub978 \uc791\uc5c5\uc744 \uc218\ud589\ud560 \uc218 \uc788\uc73c\ubbc0\ub85c, \uc751\ub2f5 \uc2dc\uac04\uc744 \ub2e8\ucd95\uc2dc\ud0b5\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Django 3.1\ubd80\ud130\ub294 \ube44\ub3d9\uae30 \ubdf0\ub97c \uc9c0\uc6d0\ud574\uc694. I\/O \ubc14\uc6b4\ub4dc \uc791\uc5c5\uc5d0 \ud2b9\ud788 \uc720\uc6a9\ud558\uc8e0.<\/p>\n\n\n\n<pre class=\"wp-block-code language-python\"><code>import asyncio\nfrom django.http import HttpResponse\n\nasync def async_view(request):\n    await asyncio.sleep(1)  # \ube44\ub3d9\uae30 I\/O \uc791\uc5c5 \uc2dc\ubbac\ub808\uc774\uc158\n    return HttpResponse(\"\ube44\ub3d9\uae30 \ubdf0\uc608\uc694!\")<\/code><\/pre>\n\n\n<style>.wp-block-kadence-advancedheading.kt-adv-heading4834_986b26-da, .wp-block-kadence-advancedheading.kt-adv-heading4834_986b26-da[data-kb-block=\"kb-adv-heading4834_986b26-da\"]{font-style:normal;}.wp-block-kadence-advancedheading.kt-adv-heading4834_986b26-da mark.kt-highlight, .wp-block-kadence-advancedheading.kt-adv-heading4834_986b26-da[data-kb-block=\"kb-adv-heading4834_986b26-da\"] mark.kt-highlight{font-style:normal;color:#f76a0c;-webkit-box-decoration-break:clone;box-decoration-break:clone;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.wp-block-kadence-advancedheading.kt-adv-heading4834_986b26-da img.kb-inline-image, .wp-block-kadence-advancedheading.kt-adv-heading4834_986b26-da[data-kb-block=\"kb-adv-heading4834_986b26-da\"] img.kb-inline-image{width:150px;vertical-align:baseline;}<\/style>\n<h3 class=\"kt-adv-heading4834_986b26-da wp-block-kadence-advancedheading\" data-kb-block=\"kb-adv-heading4834_986b26-da\">\ucf54\ub4dc \ud574\uc124<\/h3>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<h5 class=\"wp-block-heading\">1. <code>import asyncio<\/code><\/h5>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\ud30c\uc774\uc36c\uc758 <code>asyncio<\/code> \ubaa8\ub4c8\uc744 \uac00\uc838\uc635\ub2c8\ub2e4. <code>asyncio<\/code>\ub294 \ube44\ub3d9\uae30 \ud504\ub85c\uadf8\ub798\ubc0d\uc744 \uc704\ud55c \ud45c\uc900 \ub77c\uc774\ube0c\ub7ec\ub9ac\uc785\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<h5 class=\"wp-block-heading\">2. <code>from django.http import HttpResponse<\/code><\/h5>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Django\uc758 <code>http<\/code> \ubaa8\ub4c8\uc5d0\uc11c <code>HttpResponse<\/code> \ud074\ub798\uc2a4\ub97c \uac00\uc838\uc635\ub2c8\ub2e4. <code>HttpResponse<\/code>\ub294 HTTP \uc751\ub2f5 \uac1d\uccb4\ub97c \uc0dd\uc131\ud560 \ub54c \uc0ac\uc6a9\ub429\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<h5 class=\"wp-block-heading\">3. <code>async def async_view(request):<\/code><\/h5>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>async_view<\/code>\ub77c\ub294 \uc774\ub984\uc758 \ube44\ub3d9\uae30 \ubdf0 \ud568\uc218\ub97c \uc815\uc758\ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li><code>async<\/code> \ud0a4\uc6cc\ub4dc\ub294 \uc774 \ud568\uc218\uac00 \ucf54\ub8e8\ud2f4(coroutine)\uc784\uc744 \ub098\ud0c0\ub0c5\ub2c8\ub2e4. \ucf54\ub8e8\ud2f4\uc740 \ube44\ub3d9\uae30\uc801\uc73c\ub85c \uc2e4\ud589\ub420 \uc218 \uc788\ub294 \ud568\uc218\uc785\ub2c8\ub2e4.<\/li>\n\n\n\n<li><code>request<\/code>\ub294 HTTP \uc694\uccad \uac1d\uccb4\uc785\ub2c8\ub2e4. \uc694\uccad\uc5d0 \ub300\ud55c \ub2e4\uc591\ud55c \uc815\ubcf4\ub97c \ub2f4\uace0 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<h5 class=\"wp-block-heading\">4. <code>await asyncio.sleep(1) # \ube44\ub3d9\uae30 I\/O \uc791\uc5c5 \uc2dc\ubbac\ub808\uc774\uc158<\/code><\/h5>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>await asyncio.sleep(1)<\/code>\uc740 1\ucd08 \ub3d9\uc548 \uba48\ucd94\ub294 \ube44\ub3d9\uae30 \uc791\uc5c5\uc744 \uc2dc\ubbac\ub808\uc774\uc158\ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li><code>asyncio.sleep(1)<\/code>\uc740 1\ucd08 \ud6c4\uc5d0 \uc644\ub8cc\ub418\ub294 Future \uac1d\uccb4\ub97c \ubc18\ud658\ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li><code>await<\/code> \ud0a4\uc6cc\ub4dc\ub294 Future \uac1d\uccb4\uac00 \uc644\ub8cc\ub420 \ub54c\uae4c\uc9c0 \ucf54\ub8e8\ud2f4\uc758 \uc2e4\ud589\uc744 \uc77c\uc2dc \uc911\uc9c0\ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li>\uc8fc\uc11d <code># \ube44\ub3d9\uae30 I\/O \uc791\uc5c5 \uc2dc\ubbac\ub808\uc774\uc158<\/code>\uc740 \ucf54\ub4dc\uc758 \uc758\ubbf8\ub97c \uc124\uba85\ud569\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<h5 class=\"wp-block-heading\">5. <code>return HttpResponse(\"\ube44\ub3d9\uae30 \ubdf0\uc608\uc694!\")<\/code><\/h5>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>HttpResponse<\/code> \uac1d\uccb4\ub97c \uc0dd\uc131\ud558\uace0, \uc778\uc790\ub85c &#8220;\ube44\ub3d9\uae30 \ubdf0\uc608\uc694!&#8221;\ub77c\ub294 \ubb38\uc790\uc5f4\uc744 \uc804\ub2ec\ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li>\uc774 \ubb38\uc790\uc5f4\uc740 HTTP \uc751\ub2f5\uc758 \ubcf8\ubb38(body)\uc5d0 \ub2f4\uaca8\uc11c \ud074\ub77c\uc774\uc5b8\ud2b8\uc5d0\uac8c \uc804\uc1a1\ub429\ub2c8\ub2e4.<\/li>\n\n\n\n<li><code>return<\/code> \ubb38\uc740 <code>HttpResponse<\/code> \uac1d\uccb4\ub97c \ubc18\ud658\ud569\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<h5 class=\"wp-block-heading\">\uc694\uc57d<\/h5>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\uc704 \ucf54\ub4dc\ub294 1\ucd08 \ub3d9\uc548 \uba48\ucd94\ub294 \ube44\ub3d9\uae30 \uc791\uc5c5\uc744 \uc2dc\ubbac\ub808\uc774\uc158\ud558\ub294 \ube44\ub3d9\uae30 \ubdf0 \ud568\uc218 <code>async_view<\/code>\ub97c \uc815\uc758\ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li><code>async<\/code> \ud0a4\uc6cc\ub4dc\ub97c \uc0ac\uc6a9\ud558\uc5ec \ud568\uc218\ub97c \ucf54\ub8e8\ud2f4\uc73c\ub85c \ub9cc\ub4e4\uace0, <code>await<\/code> \ud0a4\uc6cc\ub4dc\ub97c \uc0ac\uc6a9\ud558\uc5ec \ube44\ub3d9\uae30 \uc791\uc5c5\uc744 \uae30\ub2e4\ub9bd\ub2c8\ub2e4.<\/li>\n\n\n\n<li>\uc774 \ubdf0 \ud568\uc218\ub294 &#8220;\ube44\ub3d9\uae30 \ubdf0\uc608\uc694!&#8221;\ub77c\ub294 \ubb38\uc790\uc5f4\uc744 \ub2f4\uc740 HTTP \uc751\ub2f5\uc744 \ubc18\ud658\ud569\ub2c8\ub2e4.<\/li>\n<\/ul>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\">\uc131\ub2a5 \ucd5c\uc801\ud654 \ud301<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Django \ubdf0\ub294 \uc6f9 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc758 \ud575\uc2ec \ub85c\uc9c1\uc744 \ucc98\ub9ac\ud558\ub294 \ubd80\ubd84\uc73c\ub85c, \ud6a8\uc728\uc801\uc778 \ubdf0 \uc791\uc131\uc744 \ud1b5\ud574 \uc131\ub2a5\uc744 \ud06c\uac8c \ud5a5\uc0c1\uc2dc\ud0ac \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n<style>.kb-image4834_0df8fb-fa .kb-image-has-overlay:after{opacity:0.3;border-top-left-radius:5px;border-top-right-radius:5px;border-bottom-right-radius:5px;border-bottom-left-radius:5px;}.kb-image4834_0df8fb-fa img.kb-img, .kb-image4834_0df8fb-fa .kb-img img{border-top-left-radius:5px;border-top-right-radius:5px;border-bottom-right-radius:5px;border-bottom-left-radius:5px;box-shadow:0px 0px 14px 0px rgba(0, 0, 0, 0.2);}<\/style>\n<div class=\"wp-block-kadence-image kb-image4834_0df8fb-fa\"><figure class=\"aligncenter size-medium_large\"><img decoding=\"async\" width=\"768\" height=\"449\" src=\"https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/01\/image-16-20-768x449.jpg\" alt=\"Django Views \uc2ec\ud654 - \uc131\ub2a5 \ucd5c\uc801\ud654 \ud301 \uc694\uc57d \uc774\ubbf8\uc9c0\" class=\"kb-img wp-image-4862\" srcset=\"https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/01\/image-16-20-768x449.jpg 768w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/01\/image-16-20-300x176.jpg 300w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/01\/image-16-20-600x351.jpg 600w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/01\/image-16-20-18x12.jpg 18w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/01\/image-16-20.jpg 1200w\" sizes=\"(max-width: 768px) 100vw, 768px\" \/><\/figure><\/div>\n\n\n<style>.wp-block-kadence-advancedheading.kt-adv-heading4834_e70ee5-a5, .wp-block-kadence-advancedheading.kt-adv-heading4834_e70ee5-a5[data-kb-block=\"kb-adv-heading4834_e70ee5-a5\"]{font-style:normal;}.wp-block-kadence-advancedheading.kt-adv-heading4834_e70ee5-a5 mark.kt-highlight, .wp-block-kadence-advancedheading.kt-adv-heading4834_e70ee5-a5[data-kb-block=\"kb-adv-heading4834_e70ee5-a5\"] mark.kt-highlight{font-style:normal;color:#f76a0c;-webkit-box-decoration-break:clone;box-decoration-break:clone;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.wp-block-kadence-advancedheading.kt-adv-heading4834_e70ee5-a5 img.kb-inline-image, .wp-block-kadence-advancedheading.kt-adv-heading4834_e70ee5-a5[data-kb-block=\"kb-adv-heading4834_e70ee5-a5\"] img.kb-inline-image{width:150px;vertical-align:baseline;}<\/style>\n<h3 class=\"kt-adv-heading4834_e70ee5-a5 wp-block-kadence-advancedheading\" data-kb-block=\"kb-adv-heading4834_e70ee5-a5\">1. <code>select_related<\/code>\uc640 <code>prefetch_related<\/code> \uc0ac\uc6a9<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><ul><li><strong>\ubb38\uc81c\uc810:<\/strong> ORM\uc744 \uc0ac\uc6a9\ud558\uc5ec \uad00\ub828 \uac1d\uccb4\ub97c \uc870\ud68c\ud560 \ub54c \ucd94\uac00\uc801\uc778 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \ucffc\ub9ac\uac00 \ubc1c\uc0dd\ud558\uc5ec \uc131\ub2a5 \uc800\ud558\ub97c \uc720\ubc1c\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li><\/ul><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><ul><li><strong>\ud574\uacb0\ucc45:<\/strong> <code>select_related<\/code>\ub294 1:1 \ub610\ub294 N:1 \uad00\uacc4\uc758 \uad00\ub828 \uac1d\uccb4\ub97c \ubbf8\ub9ac \uac00\uc838\uc640 \ucffc\ub9ac \uc218\ub97c \uc904\uc785\ub2c8\ub2e4. <code>prefetch_related<\/code>\ub294 N:N \uad00\uacc4\uc758 \uad00\ub828 \uac1d\uccb4\ub97c \ubbf8\ub9ac \uac00\uc838\uc640 \ucffc\ub9ac \uc218\ub97c \uc904\uc785\ub2c8\ub2e4.<\/li><\/ul><\/p>\n\n\n\n<pre class=\"wp-block-code language-python\"><code># author\uc640 \uad00\ub828\ub41c Book \uac1d\uccb4\ub97c \ubbf8\ub9ac \uac00\uc838\uc634\nbooks = Book.objects.select_related('author').all()\n\n# publisher\uc640 \uad00\ub828\ub41c Book \uac1d\uccb4\ub97c \ubbf8\ub9ac \uac00\uc838\uc634 (N:N \uad00\uacc4)\nbooks = Book.objects.prefetch_related('publisher').all()<\/code><\/pre>\n\n\n<style>.wp-block-kadence-advancedheading.kt-adv-heading4834_11fa9d-57, .wp-block-kadence-advancedheading.kt-adv-heading4834_11fa9d-57[data-kb-block=\"kb-adv-heading4834_11fa9d-57\"]{font-style:normal;}.wp-block-kadence-advancedheading.kt-adv-heading4834_11fa9d-57 mark.kt-highlight, .wp-block-kadence-advancedheading.kt-adv-heading4834_11fa9d-57[data-kb-block=\"kb-adv-heading4834_11fa9d-57\"] mark.kt-highlight{font-style:normal;color:#f76a0c;-webkit-box-decoration-break:clone;box-decoration-break:clone;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.wp-block-kadence-advancedheading.kt-adv-heading4834_11fa9d-57 img.kb-inline-image, .wp-block-kadence-advancedheading.kt-adv-heading4834_11fa9d-57[data-kb-block=\"kb-adv-heading4834_11fa9d-57\"] img.kb-inline-image{width:150px;vertical-align:baseline;}<\/style>\n<h3 class=\"kt-adv-heading4834_11fa9d-57 wp-block-kadence-advancedheading\" data-kb-block=\"kb-adv-heading4834_11fa9d-57\">2. DB \uc778\ub371\uc2a4 \ud65c\uc6a9<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><ul><li><strong>\ubb38\uc81c\uc810:<\/strong> \uc778\ub371\uc2a4\uac00 \uc5c6\ub294 \ud544\ub4dc\ub85c \uac80\uc0c9\ud558\uba74 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \uc804\uccb4\ub97c \uac80\uc0c9\ud574\uc57c \ud558\ubbc0\ub85c \uc131\ub2a5\uc774 \uc800\ud558\ub429\ub2c8\ub2e4.<\/li><\/ul><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><ul><li><strong>\ud574\uacb0\ucc45:<\/strong> \uc790\uc8fc \uc870\ud68c\ud558\ub294 \ud544\ub4dc\uc5d0 \uc778\ub371\uc2a4\ub97c \ucd94\uac00\ud558\uc5ec \uac80\uc0c9 \uc18d\ub3c4\ub97c \ud5a5\uc0c1\uc2dc\ud0b5\ub2c8\ub2e4. Django\ub294 \ubaa8\ub378 \ud544\ub4dc\uc5d0 <code>db_index=True<\/code> \uc635\uc158\uc744 \ucd94\uac00\ud558\uc5ec \uc778\ub371\uc2a4\ub97c \uc0dd\uc131\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li><\/ul>Python<code>class Book(models.Model): title = models.CharField(max_length=200, db_index=True) # ...<\/code><\/p>\n\n\n\n<pre class=\"wp-block-code language-python\"><code># author\uc640 \uad00\ub828\ub41c Book \uac1d\uccb4\ub97c \ubbf8\ub9ac \uac00\uc838\uc634\nbooks = Book.objects.select_related('author').all()\n\n# publisher\uc640 \uad00\ub828\ub41c Book \uac1d\uccb4\ub97c \ubbf8\ub9ac \uac00\uc838\uc634 (N:N \uad00\uacc4)\nbooks = Book.objects.prefetch_related('publisher').all()<\/code><\/pre>\n\n\n<style>.wp-block-kadence-advancedheading.kt-adv-heading4834_1f7002-8f, .wp-block-kadence-advancedheading.kt-adv-heading4834_1f7002-8f[data-kb-block=\"kb-adv-heading4834_1f7002-8f\"]{font-style:normal;}.wp-block-kadence-advancedheading.kt-adv-heading4834_1f7002-8f mark.kt-highlight, .wp-block-kadence-advancedheading.kt-adv-heading4834_1f7002-8f[data-kb-block=\"kb-adv-heading4834_1f7002-8f\"] mark.kt-highlight{font-style:normal;color:#f76a0c;-webkit-box-decoration-break:clone;box-decoration-break:clone;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.wp-block-kadence-advancedheading.kt-adv-heading4834_1f7002-8f img.kb-inline-image, .wp-block-kadence-advancedheading.kt-adv-heading4834_1f7002-8f[data-kb-block=\"kb-adv-heading4834_1f7002-8f\"] img.kb-inline-image{width:150px;vertical-align:baseline;}<\/style>\n<h3 class=\"kt-adv-heading4834_1f7002-8f wp-block-kadence-advancedheading\" data-kb-block=\"kb-adv-heading4834_1f7002-8f\">3. <strong>\uce90\uc2f1 \uc804\ub7b5<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><ul><li><strong>\ubb38\uc81c\uc810:<\/strong> \uc790\uc8fc \ubcc0\uacbd\ub418\uc9c0 \uc54a\ub294 \ub370\uc774\ud130\ub97c \ub9e4\ubc88 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0\uc11c \uc870\ud68c\ud558\uba74 \uc131\ub2a5 \ub0ad\ube44\uac00 \ubc1c\uc0dd\ud569\ub2c8\ub2e4.<\/li><\/ul><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><ul><li><strong>\ud574\uacb0\ucc45:<\/strong> \uc790\uc8fc \ubcc0\uacbd\ub418\uc9c0 \uc54a\ub294 \ub370\uc774\ud130\ub294 \uce90\uc2dc\uc5d0 \uc800\uc7a5\ud558\uc5ec \uc870\ud68c \uc18d\ub3c4\ub97c \ud5a5\uc0c1\uc2dc\ud0b5\ub2c8\ub2e4. Django\ub294 \ub2e4\uc591\ud55c \uce90\uc2dc \ubc31\uc5d4\ub4dc\ub97c \uc9c0\uc6d0\ud558\uba70, \ubdf0 \ub370\ucf54\ub808\uc774\ud130\ub098 \ud15c\ud50c\ub9bf \ud0dc\uadf8\ub97c \uc0ac\uc6a9\ud558\uc5ec \uce90\uc2dc\ub97c \uc801\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li><\/ul><\/p>\n\n\n\n<pre class=\"wp-block-code language-python\"><code>class Book(models.Model):\n    title = models.CharField(max_length=200, db_index=True)\n    # ...<\/code><\/pre>\n\n\n<style>.wp-block-kadence-advancedheading.kt-adv-heading4834_df7419-62, .wp-block-kadence-advancedheading.kt-adv-heading4834_df7419-62[data-kb-block=\"kb-adv-heading4834_df7419-62\"]{font-style:normal;}.wp-block-kadence-advancedheading.kt-adv-heading4834_df7419-62 mark.kt-highlight, .wp-block-kadence-advancedheading.kt-adv-heading4834_df7419-62[data-kb-block=\"kb-adv-heading4834_df7419-62\"] mark.kt-highlight{font-style:normal;color:#f76a0c;-webkit-box-decoration-break:clone;box-decoration-break:clone;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.wp-block-kadence-advancedheading.kt-adv-heading4834_df7419-62 img.kb-inline-image, .wp-block-kadence-advancedheading.kt-adv-heading4834_df7419-62[data-kb-block=\"kb-adv-heading4834_df7419-62\"] img.kb-inline-image{width:150px;vertical-align:baseline;}<\/style>\n<h3 class=\"kt-adv-heading4834_df7419-62 wp-block-kadence-advancedheading\" data-kb-block=\"kb-adv-heading4834_df7419-62\">4. <strong>\ud398\uc774\uc9c0\ub124\uc774\uc158<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\ubb38\uc81c\uc810:<\/strong> \ub9ce\uc740 \ub370\uc774\ud130\ub97c \ud55c \ud398\uc774\uc9c0\uc5d0 \ud45c\uc2dc\ud558\uba74 \ub85c\ub529 \uc2dc\uac04\uc774 \uae38\uc5b4\uc9c0\uace0 \uc0ac\uc6a9\uc790 \uacbd\ud5d8\uc744 \uc800\ud574\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n\n\n\n<li><strong>\ud574\uacb0\ucc45:<\/strong> \ub370\uc774\ud130\ub97c \uc5ec\ub7ec \ud398\uc774\uc9c0\ub85c \ub098\ub204\uc5b4 \ud45c\uc2dc\ud558\ub294 \ud398\uc774\uc9c0\ub124\uc774\uc158 \uae30\ub2a5\uc744 \uc0ac\uc6a9\ud569\ub2c8\ub2e4. Django\ub294 <code>Paginator<\/code> \ud074\ub798\uc2a4\ub97c \uc0ac\uc6a9\ud558\uc5ec \ud398\uc774\uc9c0\ub124\uc774\uc158\uc744 \uc27d\uac8c \uad6c\ud604\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n<style>.wp-block-kadence-advancedheading.kt-adv-heading4834_cd4758-45, .wp-block-kadence-advancedheading.kt-adv-heading4834_cd4758-45[data-kb-block=\"kb-adv-heading4834_cd4758-45\"]{font-style:normal;}.wp-block-kadence-advancedheading.kt-adv-heading4834_cd4758-45 mark.kt-highlight, .wp-block-kadence-advancedheading.kt-adv-heading4834_cd4758-45[data-kb-block=\"kb-adv-heading4834_cd4758-45\"] mark.kt-highlight{font-style:normal;color:#f76a0c;-webkit-box-decoration-break:clone;box-decoration-break:clone;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.wp-block-kadence-advancedheading.kt-adv-heading4834_cd4758-45 img.kb-inline-image, .wp-block-kadence-advancedheading.kt-adv-heading4834_cd4758-45[data-kb-block=\"kb-adv-heading4834_cd4758-45\"] img.kb-inline-image{width:150px;vertical-align:baseline;}<\/style>\n<h3 class=\"kt-adv-heading4834_cd4758-45 wp-block-kadence-advancedheading\" data-kb-block=\"kb-adv-heading4834_cd4758-45\">5. <strong>\ucffc\ub9ac \ucd5c\uc801\ud654<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><ul><li><strong>\ubb38\uc81c\uc810:<\/strong> \ube44\ud6a8\uc728\uc801\uc778 \ucffc\ub9ac\ub294 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0 \uacfc\ubd80\ud558\ub97c \uc77c\uc73c\ucf1c \uc131\ub2a5 \uc800\ud558\ub97c \uc720\ubc1c\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li><\/ul><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><ul><li><strong>\ud574\uacb0\ucc45:<\/strong> \ucffc\ub9ac\uc14b API\ub97c \uc0ac\uc6a9\ud558\uc5ec \ud544\uc694\ud55c \ub370\uc774\ud130\ub9cc \uc870\ud68c\ud558\uace0, \ubd88\ud544\uc694\ud55c \ucffc\ub9ac\ub098 \uc5f0\uc0b0\uc744 \uc904\uc785\ub2c8\ub2e4.<\/li><\/ul><\/p>\n\n\n\n<pre class=\"wp-block-code language-python\"><code># \ud544\uc694\ud55c \ud544\ub4dc\ub9cc \uc120\ud0dd\nbooks = Book.objects.only('title', 'author').all()\n\n# \ud2b9\uc815 \uc870\uac74\uc5d0 \ub9de\ub294 \ub370\uc774\ud130\ub9cc \ud544\ud130\ub9c1\nbooks = Book.objects.filter(author__name='John Doe').all()<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\ub9c8\ubb34\ub9ac<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uc9c0\uae08\uae4c\uc9c0 Django Views \uc2ec\ud654 \uae30\ub2a5\ub4e4\uc744 \uc0b4\ud3b4\ubd24\uc5b4\uc694. \ud074\ub798\uc2a4 \uae30\ubc18 \ubdf0, \uc81c\ub124\ub9ad \ubdf0, \ubbf8\ub4e4\uc6e8\uc5b4, \uadf8\ub9ac\uace0 \uc131\ub2a5 \ucd5c\uc801\ud654 \uae30\ubc95\uae4c\uc9c0. \uc774 \uae30\ub2a5\ub4e4\uc744 \uc798 \ud65c\uc6a9\ud558\uba74 \ub354\uc6b1 \uac15\ub825\ud558\uace0 \ud6a8\uc728\uc801\uc778 Django \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \ub9cc\ub4e4 \uc218 \uc788\uc744 \uac70\uc608\uc694.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ucc98\uc74c\uc5d0\ub294 \ubcf5\uc7a1\ud574 \ubcf4\uc77c \uc218 \uc788\uc9c0\ub9cc, \ud558\ub098\uc529 \uc801\uc6a9\ud574\ubcf4\uba74\uc11c \uc775\uc219\ud574\uc9c0\ub2e4 \ubcf4\uba74 \uc5ec\ub7ec\ubd84\uc758 Django \uc2e4\ub825\uc740 \ud06c\uac8c \ud5a5\uc0c1\ub420 \uac70\uc608\uc694. \uacc4\uc18d\ud574\uc11c \uc2e4\ud5d8\ud558\uace0 \uc5f0\uc2b5\ud574\ubcf4\uc138\uc694. \uc5ec\ub7ec\ubd84\uc758 Django \uc5ec\uc815\uc744 \uc751\uc6d0\ud569\ub2c8\ub2e4!<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">#\uc6a9\uc5b4 \ud574\uc124<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>CBV (Class-Based Views)<\/strong>: \ud074\ub798\uc2a4\ub97c \uc0ac\uc6a9\ud558\uc5ec \ubdf0\ub97c \uad6c\ud604\ud558\ub294 \ubc29\uc2dd<\/li>\n\n\n\n<li><strong>\uc81c\ub124\ub9ad \ubdf0<\/strong>: \uc790\uc8fc \uc0ac\uc6a9\ub418\ub294 \ubdf0 \ud328\ud134\uc744 \ubbf8\ub9ac \uad6c\ud604\ud574\ub193\uc740 \ubdf0<\/li>\n\n\n\n<li><strong>\ubbf9\uc2a4\uc778 (Mixins)<\/strong>: \ud074\ub798\uc2a4\uc5d0 \ucd94\uac00 \uae30\ub2a5\uc744 \uc81c\uacf5\ud558\ub294 \ud074\ub798\uc2a4<\/li>\n\n\n\n<li><strong>\ubbf8\ub4e4\uc6e8\uc5b4<\/strong>: \uc694\uccad\uacfc \uc751\ub2f5\uc744 \ucc98\ub9ac\ud558\ub294 \uc911\uac04 \uacc4\uce35<\/li>\n\n\n\n<li><strong>\ub370\ucf54\ub808\uc774\ud130<\/strong>: \ud568\uc218\ub098 \uba54\uc11c\ub4dc\uc758 \uae30\ub2a5\uc744 \uc218\uc815\ud558\uac70\ub098 \ud655\uc7a5\ud558\ub294 \ubc29\ubc95<\/li>\n\n\n\n<li><strong>\ube44\ub3d9\uae30 \ubdf0<\/strong>: \ube44\ub3d9\uae30 \ubc29\uc2dd\uc73c\ub85c \ub3d9\uc791\ud558\ub294 \ubdf0<\/li>\n\n\n\n<li><strong>ORM \ucd5c\uc801\ud654<\/strong>: Django ORM\uc744 \ud6a8\uc728\uc801\uc73c\ub85c \uc0ac\uc6a9\ud558\ub294 \ubc29\ubc95<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Django Views\uc758 \uc2ec\ud654 \uae30\ub2a5\ub4e4, \uc7ac\ubbf8\uc788\uac8c \ubc30\uc6b0\uc168\ub098\uc694? \uc774\uc81c \uc5ec\ub7ec\ubd84\uc758 Django \ud504\ub85c\uc81d\ud2b8\uac00 \ud55c\uce35 \ub354 \uba4b\uc838\uc9c8 \uac70\uc608\uc694. \ud654\uc774\ud305!<\/p>\n\n\n<style>.kb-image4457_249bea-0c.kb-image-is-ratio-size, .kb-image4457_249bea-0c .kb-image-is-ratio-size{max-width:300px;width:100%;}.wp-block-kadence-column > .kt-inside-inner-col > .kb-image4457_249bea-0c.kb-image-is-ratio-size, .wp-block-kadence-column > .kt-inside-inner-col > .kb-image4457_249bea-0c .kb-image-is-ratio-size{align-self:unset;}.kb-image4457_249bea-0c figure{max-width:300px;}.kb-image4457_249bea-0c .image-is-svg, .kb-image4457_249bea-0c .image-is-svg img{width:100%;}.kb-image4457_249bea-0c .kb-image-has-overlay:after{opacity:0.3;}<\/style>\n<div class=\"wp-block-kadence-image kb-image4457_249bea-0c\"><figure class=\"aligncenter size-medium\"><img decoding=\"async\" width=\"300\" height=\"300\" src=\"https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/01\/teri-coding-300x300.webp\" alt=\"\ud14c\ub9ac \uc774\ubaa8\ud2f0\ucf58\" class=\"kb-img wp-image-4456\" srcset=\"https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/01\/teri-coding-300x300.webp 300w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/01\/teri-coding-600x600.webp 600w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/01\/teri-coding-150x150.webp 150w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/01\/teri-coding-768x768.webp 768w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/01\/teri-coding-12x12.webp 12w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/01\/teri-coding.webp 1024w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><figcaption><strong>( \uc990\uac81\uac8c \ucf54\ub529\uc744 \ud569\uc2dc\ub2e4! )<\/strong><\/figcaption><\/figure><\/div>\n\n\n<style>.kb-image4457_249bea-0c.kb-image-is-ratio-size, .kb-image4457_249bea-0c .kb-image-is-ratio-size{max-width:300px;width:100%;}.wp-block-kadence-column > .kt-inside-inner-col > .kb-image4457_249bea-0c.kb-image-is-ratio-size, .wp-block-kadence-column > .kt-inside-inner-col > .kb-image4457_249bea-0c .kb-image-is-ratio-size{align-self:unset;}.kb-image4457_249bea-0c figure{max-width:300px;}.kb-image4457_249bea-0c .image-is-svg, .kb-image4457_249bea-0c .image-is-svg img{width:100%;}.kb-image4457_249bea-0c .kb-image-has-overlay:after{opacity:0.3;}<\/style>\n<div class=\"wp-block-kadence-image kb-image4457_249bea-0c\"><figure class=\"aligncenter size-medium\"><img decoding=\"async\" width=\"300\" height=\"300\" src=\"https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/01\/teri-coding-300x300.webp\" alt=\"\ud14c\ub9ac \uc774\ubaa8\ud2f0\ucf58\" class=\"kb-img wp-image-4456\" srcset=\"https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/01\/teri-coding-300x300.webp 300w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/01\/teri-coding-600x600.webp 600w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/01\/teri-coding-150x150.webp 150w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/01\/teri-coding-768x768.webp 768w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/01\/teri-coding-12x12.webp 12w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/01\/teri-coding.webp 1024w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><figcaption><strong>( \uc990\uac81\uac8c \ucf54\ub529\uc744 \ud569\uc2dc\ub2e4! )<\/strong><\/figcaption><\/figure><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\uc548\ub155\ud558\uc138\uc694, Django \uac1c\ubc1c\uc790 \uc5ec\ub7ec\ubd84! \uc624\ub298\uc740 \uae30\ubcf8\uc5d0 \uc774\uc5b4\uc11c Django Views \uc2ec\ud654&#8230;<\/p>","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kad_blocks_custom_css":"","_kad_blocks_head_custom_js":"","_kad_blocks_body_custom_js":"","_kad_blocks_footer_custom_js":"","_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"categories":[3],"tags":[812,34,849,837,722,106],"class_list":["post-4834","post","type-post","status-publish","format-standard","hentry","category-python-coding","tag-django","tag-python","tag-views","tag-837","tag-722","tag-106"],"taxonomy_info":{"category":[{"value":3,"label":"\ud30c\uc774\uc36c(Python)"}],"post_tag":[{"value":812,"label":"Django"},{"value":34,"label":"python"},{"value":849,"label":"Views"},{"value":837,"label":"\uace0\uae09 \uae30\ub2a5"},{"value":722,"label":"\uc6f9 \uac1c\ubc1c"},{"value":106,"label":"\ucd5c\uc801\ud654"}]},"featured_image_src_large":false,"author_info":{"display_name":"TERE","author_link":"https:\/\/secondlife.lol\/zh\/author\/tere\/"},"comment_info":0,"category_info":[{"term_id":3,"name":"\ud30c\uc774\uc36c(Python)","slug":"python-coding","term_group":0,"term_taxonomy_id":3,"taxonomy":"category","description":"","parent":20,"count":119,"filter":"raw","cat_ID":3,"category_count":119,"category_description":"","cat_name":"\ud30c\uc774\uc36c(Python)","category_nicename":"python-coding","category_parent":20}],"tag_info":[{"term_id":812,"name":"Django","slug":"django","term_group":0,"term_taxonomy_id":812,"taxonomy":"post_tag","description":"","parent":0,"count":10,"filter":"raw"},{"term_id":34,"name":"python","slug":"python","term_group":0,"term_taxonomy_id":34,"taxonomy":"post_tag","description":"","parent":0,"count":22,"filter":"raw"},{"term_id":849,"name":"Views","slug":"views","term_group":0,"term_taxonomy_id":849,"taxonomy":"post_tag","description":"","parent":0,"count":2,"filter":"raw"},{"term_id":837,"name":"\uace0\uae09 \uae30\ub2a5","slug":"%ea%b3%a0%ea%b8%89-%ea%b8%b0%eb%8a%a5","term_group":0,"term_taxonomy_id":837,"taxonomy":"post_tag","description":"","parent":0,"count":2,"filter":"raw"},{"term_id":722,"name":"\uc6f9 \uac1c\ubc1c","slug":"%ec%9b%b9-%ea%b0%9c%eb%b0%9c","term_group":0,"term_taxonomy_id":722,"taxonomy":"post_tag","description":"","parent":0,"count":8,"filter":"raw"},{"term_id":106,"name":"\ucd5c\uc801\ud654","slug":"%ec%b5%9c%ec%a0%81%ed%99%94","term_group":0,"term_taxonomy_id":106,"taxonomy":"post_tag","description":"","parent":0,"count":3,"filter":"raw"}],"_links":{"self":[{"href":"https:\/\/secondlife.lol\/zh\/wp-json\/wp\/v2\/posts\/4834","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/secondlife.lol\/zh\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/secondlife.lol\/zh\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/secondlife.lol\/zh\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/secondlife.lol\/zh\/wp-json\/wp\/v2\/comments?post=4834"}],"version-history":[{"count":10,"href":"https:\/\/secondlife.lol\/zh\/wp-json\/wp\/v2\/posts\/4834\/revisions"}],"predecessor-version":[{"id":4865,"href":"https:\/\/secondlife.lol\/zh\/wp-json\/wp\/v2\/posts\/4834\/revisions\/4865"}],"wp:attachment":[{"href":"https:\/\/secondlife.lol\/zh\/wp-json\/wp\/v2\/media?parent=4834"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/secondlife.lol\/zh\/wp-json\/wp\/v2\/categories?post=4834"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/secondlife.lol\/zh\/wp-json\/wp\/v2\/tags?post=4834"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}