{"id":1619,"date":"2023-04-25T09:52:06","date_gmt":"2023-04-25T00:52:06","guid":{"rendered":"http:\/\/edu.ujhb.org\/?p=1619"},"modified":"2023-04-25T09:52:07","modified_gmt":"2023-04-25T00:52:07","slug":"django%e5%85%a5%e9%96%80%ef%bc%88%e6%97%a5%e6%9c%ac%e8%aa%9e%e7%89%88%ef%bc%89","status":"publish","type":"post","link":"https:\/\/edu.ujhb.org\/?p=1619","title":{"rendered":"Django\u5165\u9580\uff08\u65e5\u672c\u8a9e\u7248\uff09"},"content":{"rendered":"\n<p>IT\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u306e\u30d3\u30c7\u30aa\u3092\u3084\u308a\u305f\u3044\u306e\u3067\u3059\u304c\u3001\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u306b\u5fdc\u3058\u3066\u30d3\u30c7\u30aa\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u306e\u30c6\u30ad\u30b9\u30c8\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u914d\u7f6e\u3057\u3066\u3044\u305f\u3060\u3051\u307e\u3059\u304b\u3002 Django\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u304b\u3089\u59cb\u3081\u307e\u3057\u3087\u3046\u3001\u305d\u3057\u3066\u3042\u306a\u305f\u306f\u79c1\u306b\u30ab\u30d0\u30fc\u3059\u308b\u3082\u306e\u306e\u30ea\u30b9\u30c8\u3092\u4e0e\u3048\u308b\u3053\u3068\u304b\u3089\u59cb\u3081\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u3082\u3061\u308d\u3093\u3067\u3059\uff01 Django\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u306e\u5185\u5bb9\u306b\u57fa\u3065\u3044\u305f\u4e00\u9023\u306e\u30d3\u30c7\u30aa\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u306e\u6982\u8981\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30b8\u30e3\u30f3\u30b4\u5165\u9580\n<ul class=\"wp-block-list\">\n<li>\u30b8\u30e3\u30f3\u30b4\u306e\u6b74\u53f2<\/li>\n\n\n\n<li>\u30b8\u30e3\u30f3\u30b4\u306e\u5229\u70b9<\/li>\n\n\n\n<li>Django \u3068\u4ed6\u306e\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3068\u306e\u6bd4\u8f03<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Django \u958b\u767a\u74b0\u5883\u304c\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3055\u308c\u3066\u3044\u308b\n<ul class=\"wp-block-list\">\n<li>Python \u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/li>\n\n\n\n<li>\u30b8\u30e3\u30f3\u30b4\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/li>\n\n\n\n<li>\u4eee\u60f3\u74b0\u5883\u306e\u69cb\u6210<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>\u30b8\u30e3\u30f3\u30b4\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u69cb\u9020\n<ul class=\"wp-block-list\">\n<li>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3068\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u6982\u5ff5<\/li>\n\n\n\n<li>\u8a73\u7d30\u306a\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u69cb\u9020<\/li>\n\n\n\n<li>\u65b0\u3057\u3044\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3068\u30a2\u30d7\u30ea\u3092\u4f5c\u6210\u3059\u308b<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>\u30b8\u30e3\u30f3\u30b4\u30e2\u30c7\u30eb\n<ul class=\"wp-block-list\">\n<li>\u30e2\u30c7\u30eb\u306e\u57fa\u672c\u6982\u5ff5<\/li>\n\n\n\n<li>\u30e2\u30c7\u30eb\u306e\u4f5c\u6210\u3068\u5909\u66f4<\/li>\n\n\n\n<li>\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u79fb\u884c<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>\u30b8\u30e3\u30f3\u30b4\u7ba1\u7406\u8005\u30d0\u30c3\u30af\u30a8\u30f3\u30c9 (\u7ba1\u7406\u8005)\n<ul class=\"wp-block-list\">\n<li>\u7d4c\u55b6\u80cc\u666f\u306e\u7d39\u4ecb<\/li>\n\n\n\n<li>\u30e2\u30c7\u30eb\u3092\u767b\u9332\u3059\u308b<\/li>\n\n\n\n<li>\u7ba1\u7406\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30a4\u30b9\u3092\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3059\u308b<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Django \u306e\u30d3\u30e5\u30fc\u3068 URL \u306e\u69cb\u6210\n<ul class=\"wp-block-list\">\n<li>\u57fa\u672c\u7684\u306a\u30d3\u30e5\u30fc\u306e\u6982\u5ff5<\/li>\n\n\n\n<li>\u30d3\u30e5\u30fc\u3092\u4f5c\u6210\u3059\u308b<\/li>\n\n\n\n<li>URL \u30b3\u30f3\u30d5\u30a3\u30ae\u30e5\u30ec\u30fc\u30b7\u30e7\u30f3<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>\u30b8\u30e3\u30f3\u30b4\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\n<ul class=\"wp-block-list\">\n<li>\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u57fa\u672c\u7684\u306a\u6982\u5ff5<\/li>\n\n\n\n<li>\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u69cb\u6587<\/li>\n\n\n\n<li>\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u7d99\u627f\u3068\u518d\u5229\u7528<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>\u30b8\u30e3\u30f3\u30b4\u30d5\u30a9\u30fc\u30e0\n<ul class=\"wp-block-list\">\n<li>\u57fa\u672c\u7684\u306a\u30d5\u30a9\u30fc\u30e0\u306e\u6982\u5ff5<\/li>\n\n\n\n<li>\u30d5\u30a9\u30fc\u30e0\u3092\u4f5c\u6210\u3059\u308b<\/li>\n\n\n\n<li>\u30d5\u30a9\u30fc\u30e0\u306e\u691c\u8a3c\u3068\u51e6\u7406<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Django \u30e6\u30fc\u30b6\u30fc\u306e\u8a8d\u8a3c\u3068\u627f\u8a8d\n<ul class=\"wp-block-list\">\n<li>\u30e6\u30fc\u30b6\u30fc\u8a8d\u8a3c\u30b7\u30b9\u30c6\u30e0\u306e\u6982\u8981<\/li>\n\n\n\n<li>\u30ed\u30b0\u30a4\u30f3\u3001\u30ed\u30b0\u30a2\u30a6\u30c8\u3001\u767b\u9332\u6a5f\u80fd\u304c\u5b9f\u88c5\u3055\u308c\u3066\u3044\u307e\u3059<\/li>\n\n\n\n<li>\u30e6\u30fc\u30b6\u30fc\u6a29\u9650\u7ba1\u7406<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Django\u9759\u7684\u30d5\u30a1\u30a4\u30eb\u306f\u30e1\u30c7\u30a3\u30a2\u30d5\u30a1\u30a4\u30eb\u3067\u51e6\u7406\u3055\u308c\u307e\u3059\n<ul class=\"wp-block-list\">\n<li>\u9759\u7684\u30d5\u30a1\u30a4\u30eb\u69cb\u6210<\/li>\n\n\n\n<li>\u30e1\u30c7\u30a3\u30a2 \u30d5\u30a1\u30a4\u30eb\u306e\u8a2d\u5b9a<\/li>\n\n\n\n<li>\u30d5\u30a1\u30a4\u30eb\u306e\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3068\u51e6\u7406<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Django \u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u3068\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306e\u6700\u9069\u5316\n<ul class=\"wp-block-list\">\n<li>\u30ad\u30e3\u30c3\u30b7\u30e5\u306e\u6982\u8981<\/li>\n\n\n\n<li>Django \u30ad\u30e3\u30c3\u30b7\u30e5\u306e\u69cb\u6210\u3068\u4f7f\u7528\u6cd5<\/li>\n\n\n\n<li>\u305d\u306e\u4ed6\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9 \u30c1\u30e5\u30fc\u30cb\u30f3\u30b0\u624b\u6cd5<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Django RESTful API \u958b\u767a\n<ul class=\"wp-block-list\">\n<li>RESTful API \u306e\u6982\u8981<\/li>\n\n\n\n<li>Django REST \u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306e\u6982\u8981<\/li>\n\n\n\n<li>Django REST \u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3092\u4f7f\u7528\u3057\u305f API \u306e\u958b\u767a<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Django \u306e\u30c7\u30d7\u30ed\u30a4\u3068\u30ea\u30ea\u30fc\u30b9\n<ul class=\"wp-block-list\">\n<li>\u5c55\u958b\u306e\u6982\u8981<\/li>\n\n\n\n<li>\u9069\u5207\u306a\u30b5\u30fc\u30d0\u30fc\u3068\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u9078\u629e\u3059\u308b<\/li>\n\n\n\n<li>WSGI \u30b5\u30fc\u30d0\u30fc\u3092\u4f7f\u7528\u3057\u3066 Django \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u30c7\u30d7\u30ed\u30a4\u3059\u308b<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>\u30b8\u30e3\u30f3\u30b4\u306e\u5b9f\u8df5\u7684\u306a\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u4f8b\n<ul class=\"wp-block-list\">\n<li>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u8981\u4ef6\u306e\u5206\u6790\u3068\u8a2d\u8a08<\/li>\n\n\n\n<li>\u958b\u767a\u30d7\u30ed\u30bb\u30b9\u306e\u30c7\u30e2\u30f3\u30b9\u30c8\u30ec\u30fc\u30b7\u30e7\u30f3<\/li>\n\n\n\n<li>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u6982\u8981\u3068\u6539\u5584<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<p>\u4e0a\u8a18\u306e\u30a2\u30a6\u30c8\u30e9\u30a4\u30f3\u30b3\u30f3\u30c6\u30f3\u30c4\u306b\u57fa\u3065\u3044\u3066\u8a73\u7d30\u306a\u30d3\u30c7\u30aa\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u3092\u4f5c\u6210\u3067\u304d\u307e\u3059\u3002 \u3055\u3089\u306b\u30b5\u30dd\u30fc\u30c8\u304c\u5fc5\u8981\u306a\u5834\u5408\u3001\u307e\u305f\u306f\u4f55\u304b\u4ed6\u306e\u3082\u306e\u3092\u8ffd\u52a0\u3057\u305f\u3044\u5834\u5408\u306f\u3001\u304a\u6c17\u8efd\u306b\u304a\u77e5\u3089\u305b\u304f\u3060\u3055\u3044\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1610\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>\u30b8\u30e3\u30f3\u30b4\u306e\u6b74\u53f2\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u6559\u3048\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Django \u306f\u3001MVT (Model-View-Template) \u30c7\u30b6\u30a4\u30f3\u30d1\u30bf\u30fc\u30f3\u306b\u5f93\u3063\u305f\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e Python \u30a6\u30a7\u30d6\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u3059\u3002 \u30b8\u30e3\u30f3\u30b4\u306e\u6b74\u53f2\u306f2003\u5e74\u306b\u3055\u304b\u306e\u307c\u308a\u3001\u305d\u306e\u8a95\u751f\u306f\u30ed\u30fc\u30ec\u30f3\u30b9\u30b8\u30e3\u30fc\u30ca\u30eb\u30ef\u30fc\u30eb\u30c9\u306e\u5185\u90e8\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3068\u3057\u3066\u59cb\u307e\u308a\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>2003\u5e74\u3001Adrian Holovaty\u3068Simon Willison\u3092\u542b\u3080Lawrence Daily News\u306e\u30aa\u30f3\u30e9\u30a4\u30f3\u958b\u767a\u30c1\u30fc\u30e0\u306f\u3001\u4fbf\u5229\u3067\u9ad8\u901f\u306aWeb\u958b\u767a\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3092\u63a2\u3057\u59cb\u3081\u307e\u3057\u305f\u3002 \u5f53\u6642\u3001\u5f7c\u3089\u306f\u81ea\u5206\u305f\u3061\u306e\u30cb\u30fc\u30ba\u3092\u6e80\u305f\u3059\u30bd\u30ea\u30e5\u30fc\u30b7\u30e7\u30f3\u3092\u898b\u3064\u3051\u3089\u308c\u306a\u304b\u3063\u305f\u306e\u3067\u3001\u5f7c\u3089\u306f\u81ea\u5206\u305f\u3061\u3067\u65b0\u3057\u3044Web\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3092\u958b\u767a\u3059\u308b\u3053\u3068\u306b\u3057\u307e\u3057\u305f\u3002 \u3053\u306e\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306e\u5f53\u521d\u306e\u76ee\u6a19\u306f\u3001Web \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u5b89\u5168\u6027\u3001\u62e1\u5f35\u6027\u3001\u4fdd\u5b88\u6027\u3092\u7dad\u6301\u3057\u306a\u304c\u3089\u3001\u958b\u767a\u8005\u306e\u751f\u7523\u6027\u3092\u5411\u4e0a\u3055\u305b\u308b\u3053\u3068\u3067\u3057\u305f\u3002<\/li>\n\n\n\n<li>2005\u5e747\u6708\u3001Django\u306f\u6b63\u5f0f\u306b\u30ea\u30ea\u30fc\u30b9\u3055\u308c\u3001\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u5316\u3055\u308c\u307e\u3057\u305f\u3002 \u30ea\u30ea\u30fc\u30b9\u4ee5\u6765\u3001Django\u306f\u958b\u767a\u8005\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u304b\u3089\u5e45\u5e83\u3044\u6ce8\u76ee\u3068\u30b5\u30dd\u30fc\u30c8\u3092\u5f97\u3066\u304a\u308a\u3001\u5f90\u3005\u306b\u6700\u3082\u4eba\u6c17\u306e\u3042\u308bPythonWeb\u958b\u767a\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306e&lt;&gt;\u3064\u306b\u306a\u308a\u307e\u3057\u305f\u3002 Django\u306f\u5e38\u306b\u300c\u9ad8\u901f\u3001\u5b89\u5168\u3001\u30b9\u30b1\u30fc\u30e9\u30d6\u30eb\u300d\u306e\u539f\u5247\u306b\u5f93\u3063\u3066\u958b\u767a\u3055\u308c\u3066\u304a\u308a\u3001Web\u958b\u767a\u8005\u306b\u591a\u304f\u306e\u52b9\u7387\u7684\u3067\u4fbf\u5229\u306a\u6a5f\u80fd\u3092\u63d0\u4f9b\u3057\u3066\u3044\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u3068\u7d44\u7e54 Django\u306e\u4eba\u6c17\u306b\u3088\u308a\u3001\u5927\u304d\u306a\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u304c\u5f90\u3005\u306b\u5f62\u6210\u3055\u308c\u307e\u3057\u305f\u3002 \u958b\u767a\u8005\u306f\u3001\u30aa\u30f3\u30e9\u30a4\u30f3\u30c7\u30a3\u30b9\u30ab\u30c3\u30b7\u30e7\u30f3\u3001\u30d6\u30ed\u30b0\u6295\u7a3f\u3001\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u3001\u304a\u3088\u3073\u6280\u8853\u30bb\u30c3\u30b7\u30e7\u30f3\u3092\u901a\u3058\u3066\u3001\u7d4c\u9a13\u3092\u4ea4\u63db\u3057\u3001\u63d0\u6848\u3092\u884c\u3044\u3001\u554f\u984c\u3092\u89e3\u6c7a\u3057\u307e\u3059\u3002 Django\u306e\u958b\u767a\u3092\u3088\u308a\u3088\u304f\u30b5\u30dd\u30fc\u30c8\u304a\u3088\u3073\u4fc3\u9032\u3059\u308b\u305f\u3081\u306b\u3001Django\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u8ca1\u56e3(DSF)\u304c2008\u5e74\u306b\u8a2d\u7acb\u3055\u308c\u307e\u3057\u305f\u3002 DSF\u306f\u3001Django\u306e\u77e5\u7684\u8ca1\u7523\u3092\u652f\u6301\u3057\u3001Django\u306e\u958b\u767a\u3092\u652f\u63f4\u3057\u3001\u6280\u8853\u4f1a\u8b70\u3092\u958b\u50ac\u3057\u3001\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u3092\u5065\u5168\u306b\u4fdd\u3064\u975e\u55b6\u5229\u56e3\u4f53\u3067\u3059\u3002<\/li>\n\n\n\n<li>Django\u306e\u30e1\u30b8\u30e3\u30fc\u30d0\u30fc\u30b8\u30e7\u30f3\u306e\u958b\u767a\u306f\u3001\u30e1\u30b8\u30e3\u30fc\u30ea\u30ea\u30fc\u30b9\u306e\u3044\u304f\u3064\u304b\u306e\u53cd\u5fa9\u3092\u7d4c\u3066\u304d\u307e\u3057\u305f\u3002 \u5143\u306e0.9x\u30d0\u30fc\u30b8\u30e7\u30f3\u304b\u30891.x\u30ea\u30ea\u30fc\u30b9\u3001\u305d\u3057\u30662.x\u304a\u3088\u30733.x\u30d0\u30fc\u30b8\u30e7\u30f3\u307e\u3067\u3001\u5404\u30d0\u30fc\u30b8\u30e7\u30f3\u306f\u65b0\u3057\u3044\u6a5f\u80fd\u3068\u6539\u5584\u3092\u3082\u305f\u3089\u3057\u307e\u3057\u305f\u3002 \u305f\u3068\u3048\u3070\u3001Django 2.0 \u3067\u306f\u975e\u540c\u671f\u30b5\u30dd\u30fc\u30c8\u304c\u5c0e\u5165\u3055\u308c\u3001Django 3.0 \u3067\u306f RESTful API \u958b\u767a\u306e\u30b5\u30dd\u30fc\u30c8\u304c\u5f37\u5316\u3055\u308c\u307e\u3057\u305f\u3002 Django\u30c1\u30fc\u30e0\u306f\u5e38\u306b\u30c6\u30af\u30ce\u30ed\u30b8\u30fc\u306e\u30c8\u30ec\u30f3\u30c9\u306b\u76ee\u3092\u5149\u3089\u305b\u3066\u304a\u308a\u3001\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3092\u5e38\u306b\u6539\u5584\u304a\u3088\u3073\u6700\u9069\u5316\u3057\u3066\u3044\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u4eca\u65e5\u3001Django\u306f\u3001Instagram\u3001Pinterest\u3001Mozilla\u306a\u3069\u306e\u591a\u304f\u306e\u6709\u540d\u306aWeb\u30b5\u30a4\u30c8\u3084\u30a2\u30d7\u30ea\u306b\u6700\u9069\u306a\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u3059\u3002 Django\u306f\u3001\u5927\u898f\u6a21\u3067\u8907\u96d1\u306aWeb\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u958b\u767a\u3060\u3051\u3067\u306a\u304f\u3001\u4e2d\u5c0f\u898f\u6a21\u306eWeb\u30b5\u30a4\u30c8\u3084API\u306e\u69cb\u7bc9\u306b\u3082\u9069\u3057\u3066\u304a\u308a\u3001\u591a\u304f\u306e\u958b\u767a\u8005\u304b\u3089\u4fe1\u983c\u3055\u308c\u3066\u3044\u308b\u512a\u308c\u305f\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1610\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>Django\u306e\u5229\u70b9\u3092\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Django\u306f\u975e\u5e38\u306b\u4eba\u6c17\u306e\u3042\u308bPython\u30a6\u30a7\u30d6\u958b\u767a\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u3042\u308a\u3001\u6b21\u306e\u5229\u70b9\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u4f7f\u3044\u3084\u3059\u3055:Django\u306f\u3001\u958b\u767a\u8005\u304cWeb\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u8fc5\u901f\u304b\u3064\u52b9\u7387\u7684\u306b\u958b\u767a\u3067\u304d\u308b\u3088\u3046\u306b\u8a2d\u8a08\u3055\u308c\u3066\u3044\u307e\u3059\u3002 DRY (Don&#8217;t Repeat Yourself) \u306e\u539f\u5247\u306b\u5f93\u3046\u3053\u3068\u3067\u3001Django \u306f\u591a\u304f\u306e\u4e00\u822c\u7684\u306a\u30b3\u30fc\u30c9\u91cd\u8907\u306e\u554f\u984c\u3092\u56de\u907f\u3057\u3001\u958b\u767a\u8005\u304c\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30b3\u30a2\u30ed\u30b8\u30c3\u30af\u306b\u96c6\u4e2d\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u8fc5\u901f\u306a\u958b\u767a:Django\u306f\u3001\u30e6\u30fc\u30b6\u30fc\u8a8d\u8a3c\u3001\u30d5\u30a9\u30fc\u30e0\u51e6\u7406\u3001\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u306a\u3069\u306e\u591a\u304f\u306e\u7d44\u307f\u8fbc\u307f\u6a5f\u80fd\u3092\u63d0\u4f9b\u3059\u308b\u305f\u3081\u3001\u958b\u767a\u8005\u306f\u3053\u308c\u3089\u306e\u6a5f\u80fd\u3092\u6700\u521d\u304b\u3089\u4f5c\u6210\u3059\u308b\u5fc5\u8981\u306f\u3042\u308a\u307e\u305b\u3093\u3002 \u3055\u3089\u306b\u3001Django\u306eORM(\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30ea\u30ec\u30fc\u30b7\u30e7\u30ca\u30eb\u30de\u30c3\u30d4\u30f3\u30b0)\u30b7\u30b9\u30c6\u30e0\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u958b\u767a\u8005\u306fSQL\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u306e\u4ee3\u308f\u308a\u306bPython\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u4f7f\u7528\u3057\u3066\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u64cd\u4f5c\u3067\u304d\u308b\u305f\u3081\u3001\u958b\u767a\u304c\u30b9\u30d4\u30fc\u30c9\u30a2\u30c3\u30d7\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3:Django\u306f\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306b\u7d30\u5fc3\u306e\u6ce8\u610f\u3092\u6255\u3044\u3001CSRF(\u30af\u30ed\u30b9\u30b5\u30a4\u30c8\u30ea\u30af\u30a8\u30b9\u30c8\u30d5\u30a9\u30fc\u30b8\u30a7\u30ea)\u4fdd\u8b77\u3001XSS(\u30af\u30ed\u30b9\u30b5\u30a4\u30c8\u30b9\u30af\u30ea\u30d7\u30c6\u30a3\u30f3\u30b0\u653b\u6483)\u9632\u5fa1\u3001SQL\u30a4\u30f3\u30b8\u30a7\u30af\u30b7\u30e7\u30f3\u4fdd\u8b77\u306a\u3069\u306e\u3055\u307e\u3056\u307e\u306a\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u5bfe\u7b56\u3092\u958b\u767a\u8005\u306b\u63d0\u4f9b\u3057\u307e\u3059\u3002 \u3053\u308c\u3089\u306e\u6a5f\u80fd\u306f\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u6709\u52b9\u306b\u306a\u3063\u3066\u304a\u308a\u3001\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306e\u8105\u5a01\u306b\u5bfe\u51e6\u3059\u308b\u969b\u306e\u958b\u767a\u8005\u306e\u4f5c\u696d\u8ca0\u8377\u3092\u8efd\u6e1b\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u62e1\u5f35\u6027: Django \u306f\u3001MVT \u306e\u30e2\u30c7\u30eb &#8211; \u30d3\u30e5\u30fc &#8211; \u30c6\u30f3\u30d7\u30ec\u30fc\u30c8 \u30c7\u30b6\u30a4\u30f3 \u30d1\u30bf\u30fc\u30f3\u306b\u5f93\u3063\u3066\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u758e\u7d50\u5408\u3092\u5b9f\u73fe\u3057\u307e\u3059\u3002 \u3053\u308c\u306b\u3088\u308a\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u62e1\u5f35\u6642\u306b\u65b0\u3057\u3044\u6a5f\u80fd\u3092\u7c21\u5358\u306b\u8ffd\u52a0\u3067\u304d\u307e\u3059\u3002 \u540c\u6642\u306b\u3001Django\u306f\u3055\u307e\u3056\u307e\u306a\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u304a\u308a\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30cb\u30fc\u30ba\u306b\u5fdc\u3058\u3066\u67d4\u8edf\u306b\u5207\u308a\u66ff\u3048\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u30b5\u30dd\u30fc\u30c8:Django\u306b\u306f\u3001\u958b\u767a\u8005\u306b\u8c4a\u5bcc\u306a\u30ea\u30bd\u30fc\u30b9\u3068\u6280\u8853\u30b5\u30dd\u30fc\u30c8\u3092\u63d0\u4f9b\u3059\u308b\u5927\u898f\u6a21\u306a\u958b\u767a\u8005\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u304c\u3042\u308a\u307e\u3059\u3002 \u554f\u984c\u304c\u767a\u751f\u3057\u305f\u5834\u5408\u306f\u3001\u30d5\u30a9\u30fc\u30e9\u30e0\u3001\u30e1\u30fc\u30ea\u30f3\u30b0\u30ea\u30b9\u30c8\u3001\u30b9\u30bf\u30c3\u30af\u30aa\u30fc\u30d0\u30fc\u30d5\u30ed\u30fc\u3001\u304a\u3088\u3073\u305d\u306e\u4ed6\u306e\u30c1\u30e3\u30cd\u30eb\u3092\u901a\u3058\u3066\u652f\u63f4\u3092\u6c42\u3081\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u3055\u3089\u306b\u3001\u591a\u6570\u306eDjango\u30d7\u30e9\u30b0\u30a4\u30f3\u3068\u62e1\u5f35\u6a5f\u80fd\u304b\u3089\u9078\u629e\u3067\u304d\u308b\u305f\u3081\u3001\u958b\u767a\u8005\u306e\u30c4\u30fc\u30eb\u30dc\u30c3\u30af\u30b9\u304c\u5145\u5b9f\u3057\u3066\u3044\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306e\u6539\u5584:Django\u306e\u516c\u5f0f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306f\u975e\u5e38\u306b\u8a73\u7d30\u3067\u3001\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306e\u3059\u3079\u3066\u306e\u5074\u9762\u3092\u30ab\u30d0\u30fc\u3057\u3066\u3044\u307e\u3059\u3002 \u521d\u5fc3\u8005\u306b\u3068\u3063\u3066\u3001\u3053\u308c\u3089\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306fDjango\u3092\u5b66\u3076\u305f\u3081\u306e\u8cb4\u91cd\u306a\u30ea\u30bd\u30fc\u30b9\u3067\u3059\u3002 \u3055\u3089\u306b\u3001\u591a\u304f\u306e\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u30e1\u30f3\u30d0\u30fc\u304c\u30d6\u30ed\u30b0\u6295\u7a3f\u3001\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u3001\u304a\u3088\u3073\u672c\u3092\u66f8\u3044\u3066\u3001\u7d4c\u9a13\u3084\u30d2\u30f3\u30c8\u3092\u5171\u6709\u3057\u3066\u3044\u307e\u3059\u3002<\/li>\n\n\n\n<li>RESTful API \u306e\u30b5\u30dd\u30fc\u30c8: Django \u306f Django REST \u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3068\u7d44\u307f\u5408\u308f\u3055\u308c\u3001RESTful API \u306e\u958b\u767a\u3092\u5bb9\u6613\u306b\u3057\u307e\u3059\u3002 \u3053\u308c\u306b\u3088\u308a\u3001Django \u3092 React\u3001Angular\u3001Vue \u306a\u3069\u306e\u4ed6\u306e\u30d5\u30ed\u30f3\u30c8\u30a8\u30f3\u30c9\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3068\u7c21\u5358\u306b\u7d71\u5408\u3057\u3066\u3001\u6700\u65b0\u306e Web \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u69cb\u7bc9\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u3042\u3089\u3086\u308b\u898f\u6a21\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u5834\u5408:Django\u306f\u3001\u5c0f\u898f\u6a21\u306a\u500b\u4eba\u30d6\u30ed\u30b0\u304b\u3089\u5927\u4f01\u696d\u307e\u3067\u3001\u3042\u3089\u3086\u308b\u898f\u6a21\u306eWeb\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u958b\u767a\u306b\u9069\u3057\u3066\u3044\u307e\u3059<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1610\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306f Django \u3092\u4f7f\u7528\u3057\u3066\u958b\u767a\u3067\u304d\u307e\u3059\u3002 Django \u306e\u67d4\u8edf\u6027\u3068\u62e1\u5f35\u6027\u306b\u3088\u308a\u3001\u3055\u307e\u3056\u307e\u306a\u30b7\u30ca\u30ea\u30aa\u3067\u512a\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"9\">\n<li>\u8c4a\u5bcc\u306a\u30df\u30c9\u30eb\u30a6\u30a7\u30a2\u306e\u30b5\u30dd\u30fc\u30c8:Django\u306f\u3001\u30ad\u30e3\u30c3\u30b7\u30e5\u3001\u5727\u7e2e\u3001\u30af\u30ed\u30b9\u30aa\u30ea\u30b8\u30f3\u30ea\u30bd\u30fc\u30b9\u5171\u6709\u306a\u3069\u3001\u591a\u304f\u306e\u7d44\u307f\u8fbc\u307f\u30df\u30c9\u30eb\u30a6\u30a7\u30a2\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002 \u3053\u308c\u3089\u306e\u30df\u30c9\u30eb\u30a6\u30a7\u30a2\u306f\u3001\u958b\u767a\u8005\u304cWeb\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3068\u30e6\u30fc\u30b6\u30fc\u30a8\u30af\u30b9\u30da\u30ea\u30a8\u30f3\u30b9\u3092\u5411\u4e0a\u3055\u305b\u308b\u6a5f\u80fd\u3092\u3059\u3070\u3084\u304f\u5b9f\u88c5\u3059\u308b\u306e\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002 \u540c\u6642\u306b\u3001\u958b\u767a\u8005\u306f\u7279\u5b9a\u306e\u30cb\u30fc\u30ba\u3092\u6e80\u305f\u3059\u30ab\u30b9\u30bf\u30e0\u30df\u30c9\u30eb\u30a6\u30a7\u30a2\u3092\u4f5c\u6210\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30c6\u30b9\u30c8\u30b5\u30dd\u30fc\u30c8:Django\u306b\u306f\u5f37\u529b\u306a\u7d44\u307f\u8fbc\u307f\u306e\u30c6\u30b9\u30c8\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u304c\u3042\u308a\u3001\u30c6\u30b9\u30c8\u306e\u4f5c\u6210\u3068\u5b9f\u884c\u304c\u5bb9\u6613\u306b\u306a\u308a\u307e\u3059\u3002 \u5358\u4f53\u30c6\u30b9\u30c8\u3068\u7d71\u5408\u30c6\u30b9\u30c8\u3092\u4f5c\u6210\u3059\u308b\u3053\u3068\u3067\u3001\u958b\u767a\u8005\u306f\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u5b89\u5b9a\u6027\u3068\u4fe1\u983c\u6027\u3092\u78ba\u4fdd\u3067\u304d\u307e\u3059\u3002 \u3055\u3089\u306b\u3001Django\u306f\u591a\u304f\u306e\u30b5\u30fc\u30c9\u30d1\u30fc\u30c6\u30a3\u306e\u30c6\u30b9\u30c8\u30e9\u30a4\u30d6\u30e9\u30ea(pytest\u3001factory_boy\u306a\u3069)\u3068\u4e92\u63db\u6027\u304c\u3042\u308a\u3001\u958b\u767a\u8005\u306b\u3088\u308a\u591a\u304f\u306e\u30c6\u30b9\u30c8\u30c4\u30fc\u30eb\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u56fd\u969b\u5316\u3068\u30ed\u30fc\u30ab\u30ea\u30bc\u30fc\u30b7\u30e7\u30f3: Django \u306f\u56fd\u969b\u5316 (i18n) \u3068\u30ed\u30fc\u30ab\u30ea\u30bc\u30fc\u30b7\u30e7\u30f3 (l10n) \u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u304a\u308a\u3001Web \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u591a\u8a00\u8a9e\u30b5\u30dd\u30fc\u30c8\u3092\u7c21\u5358\u306b\u8ffd\u52a0\u3067\u304d\u307e\u3059\u3002 Django \u304c\u63d0\u4f9b\u3059\u308b\u7ffb\u8a33\u30c4\u30fc\u30eb\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u958b\u767a\u8005\u306f\u30a2\u30d7\u30ea\u3092\u3055\u307e\u3056\u307e\u306a\u8a00\u8a9e\u3084\u5730\u57df\u306b\u7c21\u5358\u306b\u30ed\u30fc\u30ab\u30e9\u30a4\u30ba\u3067\u304d\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u7d50\u8ad6\u3068\u3057\u3066\u3001Django\u306f\u5f37\u529b\u3067\u4f7f\u3044\u3084\u3059\u304f\u3001\u5b89\u5168\u3067\u3001\u5341\u5206\u306b\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308bWeb\u958b\u767a\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u3059\u3002 \u3053\u308c\u3089\u306e\u5229\u70b9\u306b\u3088\u308a\u3001Django\u306fWeb\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u69cb\u7bc9\u3059\u308b\u969b\u306b\u591a\u304f\u306e\u958b\u767a\u8005\u306b\u9078\u3070\u308c\u308b\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1610\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>Django\u3068\u4ed6\u306e\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3068\u306e\u6bd4\u8f03\u3092\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Web\u958b\u767a\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3092\u9078\u629e\u3059\u308b\u3068\u304d\u3001\u958b\u767a\u8005\u306f\u3055\u307e\u3056\u307e\u306a\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306e\u6a5f\u80fd\u3068\u9577\u6240\u3068\u77ed\u6240\u3092\u6bd4\u8f03\u3059\u308b\u3053\u3068\u304c\u3088\u304f\u3042\u308a\u307e\u3059\u3002 Django\u3092\u4ed6\u306e\u4e00\u822c\u7684\u306a\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3068\u6bd4\u8f03\u3059\u308b\u3068\u3001\u6b21\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30b8\u30e3\u30f3\u30b4\u4e0e\u30d5\u30e9\u30b9\u30b3(\u30d1\u30a4\u30bd\u30f3)\n<ul class=\"wp-block-list\">\n<li>Flask \u306f\u3001WSGI \u6a19\u6e96\u306b\u6e96\u62e0\u3057\u305f\u8efd\u91cf\u306e Python \u30a6\u30a7\u30d6\u958b\u767a\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u3059\u3002 Django\u3068\u6bd4\u8f03\u3057\u3066\u3001Flask\u306f\u3088\u308a\u7c21\u6f54\u3067\u3001\u57fa\u672c\u7684\u306a\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u3001\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3001\u304a\u3088\u3073\u30a8\u30e9\u30fc\u51e6\u7406\u6a5f\u80fd\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002 \u958b\u767a\u8005\u306f\u3001\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3055\u308c\u305f\u6a5f\u80fd\u3092\u5b9f\u73fe\u3059\u308b\u305f\u3081\u306b\u3001\u30cb\u30fc\u30ba\u306b\u5fdc\u3058\u3066\u62e1\u5f35\u6a5f\u80fd\u3068\u30d7\u30e9\u30b0\u30a4\u30f3\u3092\u9078\u629e\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>Django\u306f\u3001\u958b\u767a\u8005\u304cWeb\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u3059\u3070\u3084\u304f\u69cb\u7bc9\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b\u591a\u304f\u306e\u7d44\u307f\u8fbc\u307f\u6a5f\u80fd(ORM\u3001\u30d5\u30a9\u30fc\u30e0\u51e6\u7406\u3001\u30e6\u30fc\u30b6\u30fc\u8a8d\u8a3c\u306a\u3069)\u3092\u63d0\u4f9b\u3059\u308b\u30d5\u30eb\u6a5f\u80fd\u306eWeb\u958b\u767a\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u3059\u3002 \u5bfe\u7167\u7684\u306b\u3001Django\u306f\u4e2d\u898f\u6a21\u304b\u3089\u5927\u898f\u6a21\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u958b\u767a\u306b\u9069\u3057\u3066\u3044\u307e\u3059\u304c\u3001Flask\u306f\u8efd\u91cf\u306e\u30de\u30a4\u30af\u30ed\u30b5\u30fc\u30d3\u30b9\u3084\u30b7\u30f3\u30b0\u30eb\u30da\u30fc\u30b8\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u9069\u3057\u3066\u3044\u307e\u3059\u3002<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>\u30b8\u30e3\u30f3\u30b4\u4e0e Ruby on Rails(Ruby)\n<ul class=\"wp-block-list\">\n<li>Ruby on Rails(\u7565\u3057\u3066Rails)\u306f\u3001MVC\u30c7\u30b6\u30a4\u30f3\u30d1\u30bf\u30fc\u30f3\u306b\u5f93\u3046Ruby\u30d9\u30fc\u30b9\u306eWeb\u958b\u767a\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u3059\u3002 Rails\u3068Django\u306f\u3069\u3061\u3089\u3082\u69cb\u6210\u3088\u308a\u3082\u898f\u5247\u3092\u91cd\u8996\u3057\u3066\u304a\u308a\u3001\u958b\u767a\u8005\u306f\u7d71\u4e00\u3055\u308c\u305f\u4ed5\u69d8\u306e\u30bb\u30c3\u30c8\u306b\u5f93\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u3069\u3061\u3089\u306e\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3082\u540c\u69d8\u306e\u6a5f\u80fd\u3068\u76ee\u6a19\u3092\u6301\u3061\u3001\u8fc5\u901f\u306aWeb\u30a2\u30d7\u30ea\u958b\u767a\u306b\u9069\u3057\u3066\u3044\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u8a00\u8a9e\u5b66\u7684\u306b\u306f\u3001\u958b\u767a\u8005\u304cPython\u306b\u7cbe\u901a\u3057\u3066\u3044\u308b\u5834\u5408\u306f\u3001Django\u306e\u65b9\u304c\u9069\u3057\u3066\u3044\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 Ruby\u306b\u7cbe\u901a\u3057\u3066\u3044\u308b\u5834\u5408\u306f\u3001Rails\u306e\u65b9\u304c\u4fbf\u5229\u306a\u9078\u629e\u80a2\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002 \u3055\u3089\u306b\u3001\u4e21\u65b9\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3068\u30b9\u30b1\u30fc\u30e9\u30d3\u30ea\u30c6\u30a3\u306f\u985e\u4f3c\u3057\u3066\u304a\u308a\u3001\u9078\u629e\u306f\u958b\u767a\u8005\u306e\u597d\u307f\u3068\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30cb\u30fc\u30ba\u306b\u3088\u3063\u3066\u7570\u306a\u308a\u307e\u3059\u3002<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Django \u4e0e Express(JavaScript)\n<ul class=\"wp-block-list\">\n<li>\u30a8\u30af\u30b9\u30d7\u30ec\u30b9\u306f\u3001\u958b\u767a\u8a00\u8a9e\u3068\u3057\u3066JavaScript\u3092\u4f7f\u7528\u3059\u308b\u30ce\u30fc\u30c9.js\u30d9\u30fc\u30b9\u306eWeb\u958b\u767a\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u3059\u3002 Django\u3068\u6bd4\u8f03\u3057\u3066\u3001Express\u306f\u3088\u308a\u8efd\u91cf\u3067\u3001\u57fa\u672c\u7684\u306a\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u3068\u30df\u30c9\u30eb\u30a6\u30a7\u30a2\u306e\u30b5\u30dd\u30fc\u30c8\u3092\u63d0\u4f9b\u3057\u3001\u958b\u767a\u8005\u304c\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u6a5f\u80fd\u3092\u8ffd\u52a0\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>Django \u306b\u306f\u3001\u4e2d\u898f\u6a21\u304b\u3089\u5927\u898f\u6a21\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u958b\u767a\u3059\u308b\u305f\u3081\u306e\u7d44\u307f\u8fbc\u307f\u6a5f\u80fd\u3068\u898f\u5247\u304c\u8ffd\u52a0\u3055\u308c\u3066\u3044\u307e\u3059\u3002 \u4e00\u65b9\u3001Express\u306f\u3001RESTful API\u3084\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u69cb\u7bc9\u306b\u9069\u3057\u3066\u3044\u307e\u3059\u3002 \u30c6\u30af\u30ce\u30ed\u30b8\u30fc\u30b9\u30bf\u30c3\u30af\u306e\u89b3\u70b9\u304b\u3089\u306f\u3001\u958b\u767a\u8005\u304cJavaScript\u306b\u7cbe\u901a\u3057\u3066\u3044\u308b\u5834\u5408\u306f\u3001Express\u306e\u65b9\u304c\u9069\u5207\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002 Python \u306b\u7cbe\u901a\u3057\u3066\u3044\u308b\u5834\u5408\u306f\u3001Django \u3092\u9078\u629e\u3059\u308b\u65b9\u304c\u7c21\u5358\u3067\u3059\u3002<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>\u30b8\u30e3\u30f3\u30b4\u3068\u30e9\u30e9\u30d9\u30eb (PHP)\n<ul class=\"wp-block-list\">\n<li>Laravel\u306f\u3001MVC\u30c7\u30b6\u30a4\u30f3\u30d1\u30bf\u30fc\u30f3\u306b\u5f93\u3063\u305fPHP\u30d9\u30fc\u30b9\u306eWeb\u958b\u767a\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u3059\u3002 Laravel\u306f\u3001ORM\u3001\u30d5\u30a9\u30fc\u30e0\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u3001\u30e6\u30fc\u30b6\u30fc\u8a8d\u8a3c\u306a\u3069\u306eDjango\u306e\u3088\u3046\u306a\u6a5f\u80fd\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002 \u4e21\u8005\u306e\u6a5f\u80fd\u3068\u8a2d\u8a08\u54f2\u5b66\u306b\u306f\u591a\u304f\u306e\u985e\u4f3c\u70b9\u304c\u3042\u308a\u3001\u3069\u3061\u3089\u3082\u8fc5\u901f\u306aWeb\u30a2\u30d7\u30ea\u958b\u767a\u306b\u9069\u3057\u3066\u3044\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u8a00\u8a9e\u7684\u306b\u306f\u3001\u958b\u767a\u8005\u304cPHP\u306b\u7cbe\u901a\u3057\u3066\u3044\u308b\u5834\u5408\u306f\u3001Laravel\u306e\u65b9\u304c\u9069\u5207\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002 \u3082\u3057<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1610\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>Python\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Python \u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u30d7\u30ed\u30bb\u30b9\u306f\u3001\u30aa\u30da\u30ec\u30fc\u30c6\u30a3\u30f3\u30b0 \u30b7\u30b9\u30c6\u30e0\u306b\u3088\u3063\u3066\u7570\u306a\u308a\u307e\u3059\u3002 Windows\u3001macOS\u3001\u304a\u3088\u3073Linux\u7528\u306ePython\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059(\u4f8b\u3068\u3057\u3066Ubuntu\u3092\u4f7f\u7528)\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Windows\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0:a.&nbsp;<a href=\"https:\/\/www.python.org\/%EF%BC%89%E7%9A%84%E4%B8%8B%E8%BD%BD%E9%A1%B5%E9%9D%A2%E3%80%82\">Python\u306e\u516c\u5f0f\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8(https:\/\/www.python.org\/)\u306e\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u30da\u30fc\u30b8\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002&nbsp;<\/a>b.b. \u304a\u4f7f\u3044\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u306e Windows (32 \u30d3\u30c3\u30c8\u307e\u305f\u306f 64 \u30d3\u30c3\u30c8) \u7528\u306e\u6700\u65b0\u306e Python \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb \u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u9078\u629e\u3057\u307e\u3059\u3002 c. \u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u304c\u5b8c\u4e86\u3057\u305f\u3089\u3001\u30c0\u30d6\u30eb\u30af\u30ea\u30c3\u30af\u3057\u3066\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb \u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002 d. \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u753b\u9762\u3067\u300cPython \u3092 PATH \u306b\u8ffd\u52a0\u300d\u306b\u30c1\u30a7\u30c3\u30af\u3092\u5165\u308c\u3001\u300c\u4eca\u3059\u3050\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u300d\u3092\u30af\u30ea\u30c3\u30af\u3057\u307e\u3059\u3002 \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u304c\u5b8c\u4e86\u3057\u305f\u3089\u3001\u30b9\u30bf\u30fc\u30c8\u30e1\u30cb\u30e5\u30fc\u3067Python\u3092\u898b\u3064\u3051\u3066\u5b9f\u884c\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>macOS\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0:a.&nbsp;<a href=\"https:\/\/www.python.org\/%EF%BC%89%E7%9A%84%E4%B8%8B%E8%BD%BD%E9%A1%B5%E9%9D%A2%E3%80%82\">Python\u306e\u516c\u5f0f\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8(https:\/\/www.python.org\/)\u306e\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u30da\u30fc\u30b8\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002&nbsp;<\/a>b.b. \u304a\u4f7f\u3044\u306e macOS \u30d0\u30fc\u30b8\u30e7\u30f3\u7528\u306e\u6700\u65b0\u306e Python \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb \u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u9078\u629e\u3057\u307e\u3059\u3002 c. \u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u304c\u5b8c\u4e86\u3057\u305f\u3089\u3001\u30c0\u30d6\u30eb\u30af\u30ea\u30c3\u30af\u3057\u3066\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb \u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002 d. \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb \u30a6\u30a3\u30b6\u30fc\u30c9\u306e\u30d7\u30ed\u30f3\u30d7\u30c8\u306b\u5f93\u3063\u3066\u3001\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3092\u5b8c\u4e86\u3057\u307e\u3059\u3002 \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u304c\u5b8c\u4e86\u3057\u305f\u3089\u3001\u30bf\u30fc\u30df\u30ca\u30eb\u306b\u5165\u529b\u3057\u3066Python\u3092\u5b9f\u884c\u3067\u304d\u307e\u3059\u3002<code>python3<\/code><\/li>\n\n\n\n<li>Ubuntu (Linux) \u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0: \u901a\u5e38\u3001Ubuntu \u30b7\u30b9\u30c6\u30e0\u306b\u306f Python \u304c\u4ed8\u5c5e\u3057\u3066\u3044\u307e\u3059\u3002 \u30bf\u30fc\u30df\u30ca\u30eb\u306b\u5165\u529b\u3059\u308b\u3068\u3001\u73fe\u5728\u306ePython\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u78ba\u8a8d\u3067\u304d\u307e\u3059\u3002 \u6700\u65b0\u30d0\u30fc\u30b8\u30e7\u30f3\u306e Python \u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u306f\u3001\u6b21\u306e\u624b\u9806\u306b\u5f93\u3044\u307e\u3059\u3002 \u30bf\u30fc\u30df\u30ca\u30eb\u3092\u958b\u304d\u307e\u3059\u3002 \u307e\u305a\u3001\u30b7\u30b9\u30c6\u30e0\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u30ea\u30b9\u30c8\u304c\u6700\u65b0\u3067\u3042\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3001\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5165\u529b\u3057\u3066Enter\u30ad\u30fc\u3092\u62bc\u3057\u307e\u3059:sqlCopy codec\u3002 \u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3057\u3066Python\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059:\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc\u3057\u307e\u3059\u3002 \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u304c\u5b8c\u4e86\u3057\u305f\u3089\u3001\u5165\u529b\u3057\u3066Enter\u30ad\u30fc\u3092\u62bc\u3059\u3068\u3001Python\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u60c5\u5831\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002<code>python3<\/code><code>sudo apt update&nbsp;<\/code><code>sudo apt install python3&nbsp;<\/code><code>python3<\/code><\/li>\n<\/ol>\n\n\n\n<p>\u6ce8: \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u4e2d\u306b\u7ba1\u7406\u8005\u30d1\u30b9\u30ef\u30fc\u30c9\u306e\u5165\u529b\u304c\u5fc5\u8981\u306b\u306a\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u4e0a\u8a18\u306e\u624b\u9806\u3092\u5b8c\u4e86\u3059\u308b\u3068\u3001\u9069\u5207\u306a\u30aa\u30da\u30ec\u30fc\u30c6\u30a3\u30f3\u30b0\u30b7\u30b9\u30c6\u30e0\u3067Python\u3067\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u3059\u308b\u6e96\u5099\u304c\u6574\u3044\u307e\u3059\u3002 Python \u30e9\u30a4\u30d6\u30e9\u30ea\u307e\u305f\u306f\u62e1\u5f35\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u306f\u3001Python \u306e\u30d1\u30c3\u30b1\u30fc\u30b8 \u30de\u30cd\u30fc\u30b8\u30e3\u30fc pip \u3092\u4f7f\u7528\u3067\u304d\u307e\u3059 (Python 3.4 \u4ee5\u964d\u3067\u306f\u65e2\u5b9a\u3067\u542b\u307e\u308c\u3066\u3044\u307e\u3059)\u3002 \u305f\u3068\u3048\u3070\u3001Django \u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u306b\u306f\u3001\u30bf\u30fc\u30df\u30ca\u30eb\u307e\u305f\u306f\u30b3\u30de\u30f3\u30c9\u30d7\u30ed\u30f3\u30d7\u30c8\u3067\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5165\u529b\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">Copy code<code>pip install django\n<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1610\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Python \u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u305f\u5f8c\u3001Python \u3068\u95a2\u9023\u30c4\u30fc\u30eb\u3092\u4f7f\u3044\u3084\u3059\u304f\u3059\u308b\u305f\u3081\u306b\u3001\u3044\u304f\u3064\u304b\u306e\u57fa\u672c\u7684\u306a\u69cb\u6210\u3092\u884c\u3046\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002 \u63a8\u5968\u3055\u308c\u308b\u69cb\u6210\u3068\u30a2\u30af\u30b7\u30e7\u30f3\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u30d4\u30c3\u30d7:Python\u30d1\u30c3\u30b1\u30fc\u30b8\u30de\u30cd\u30fc\u30b8\u30e3\u30fc\u30d4\u30c3\u30d7\u306f\u3001Python\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u304a\u3088\u3073\u7ba1\u7406\u3059\u308b\u305f\u3081\u306e\u5f37\u529b\u306a\u30c4\u30fc\u30eb\u3067\u3059\u3002 pip\u304c\u6b63\u3057\u304f\u6a5f\u80fd\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3059\u308b\u306b\u306f\u3001pip\u304c\u6700\u65b0\u3067\u3042\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002 \u30bf\u30fc\u30df\u30ca\u30eb\u3067\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u307e\u3059(Windows\u306e\u5834\u5408\u306f\u30b3\u30de\u30f3\u30c9\u30d7\u30ed\u30f3\u30d7\u30c8\u3001macOS\u304a\u3088\u3073Linux\u306e\u5834\u5408\u306f\u30bf\u30fc\u30df\u30ca\u30eb)\u3002<code>pip install --upgrade pip<\/code><\/li>\n\n\n\n<li>\u4eee\u60f3\u74b0\u5883\u3092\u4f7f\u7528\u3059\u308b: \u7570\u306a\u308b\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u9593\u306e\u4f9d\u5b58\u95a2\u4fc2\u306e\u7af6\u5408\u3092\u56de\u907f\u3059\u308b\u305f\u3081\u306b\u3001Python \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3054\u3068\u306b\u4eee\u60f3\u74b0\u5883\u3092\u4f5c\u6210\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002 Python 3.3\u4ee5\u964d\u306b\u306f\u3001\u4eee\u60f3\u74b0\u5883\u3092\u4f5c\u6210\u304a\u3088\u3073\u7ba1\u7406\u3059\u308b\u305f\u3081\u306evenv\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u4ed8\u5c5e\u3057\u3066\u3044\u307e\u3059\u3002 \u4eee\u60f3\u74b0\u5883\u3092\u4f5c\u6210\u3057\u3066\u30a2\u30af\u30c6\u30a3\u30d6\u5316\u3059\u308b\u65b9\u6cd5\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059\u3002<ul><li>Windows \u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0: a. \u30b3\u30de\u30f3\u30c9 \u30d7\u30ed\u30f3\u30d7\u30c8\u3092\u958b\u304d\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8 \u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u79fb\u52d5\u3057\u307e\u3059\u3002 b. \u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5165\u529b\u3057\u3066\u3001\u4eee\u60f3\u74b0\u5883\u3092\u4f5c\u6210\u3057\u307e\u3059 (\u4f8b\u3068\u3057\u3066 env): bashCopy \u30b3\u30fc\u30c7\u30c3\u30af\u3002 \u4eee\u60f3\u74b0\u5883\u3092\u30a2\u30af\u30c6\u30a3\u30d6\u5316\u3059\u308b:bashCopy\u30b3\u30fc\u30c9<code>python -m venv env&nbsp;<\/code><code>.\\env\\Scripts\\activate<\/code><\/li><li>macOS \u304a\u3088\u3073 Linux \u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0: a. \u30bf\u30fc\u30df\u30ca\u30eb\u3092\u958b\u304d\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8 \u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u79fb\u52d5\u3057\u307e\u3059\u3002 b. \u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5165\u529b\u3057\u3066\u3001\u4eee\u60f3\u74b0\u5883\u3092\u4f5c\u6210\u3057\u307e\u3059 (\u4f8b\u3068\u3057\u3066 env): bashCopy \u30b3\u30fc\u30c7\u30c3\u30af\u3002 \u4eee\u60f3\u74b0\u5883\u3092\u30a2\u30af\u30c6\u30a3\u30d6\u5316\u3059\u308b:bashCopy\u30b3\u30fc\u30c9<code>python3 -m venv env&nbsp;<\/code><code>source env\/bin\/activate<\/code><\/li><\/ul>\u4eee\u60f3\u74b0\u5883\u3092\u30a2\u30af\u30c6\u30a3\u30d6\u5316\u3059\u308b\u3068\u3001\u4ed6\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3084\u30b7\u30b9\u30c6\u30e0\u5168\u4f53\u306e Python \u74b0\u5883\u306b\u5f71\u97ff\u3092\u4e0e\u3048\u308b\u3053\u3068\u306a\u304f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b Python \u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3066\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u5171\u901a\u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb: \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30cb\u30fc\u30ba\u306b\u5fdc\u3058\u3066\u3001Django\u3001Flask\u3001NumPy\u3001Pandas \u306a\u3069\u306e\u4e00\u822c\u7684\u306a Python \u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002 \u4eee\u60f3\u74b0\u5883\u3092\u30a2\u30af\u30c6\u30a3\u30d6\u306b\u3057\u3066\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u3001\u5fc5\u8981\u306a\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3066\u304f\u3060\u3055\u3044\u3002 \u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc\u3057\u3001&#8221;package_name&#8221; \u3092\u5b9f\u969b\u306e\u30e9\u30a4\u30d6\u30e9\u30ea\u540d\u306b\u7f6e\u304d\u63db\u3048\u307e\u3059\u3002<code>pip install package_name<\/code><\/li>\n\n\n\n<li>\u7d71\u5408\u958b\u767a\u74b0\u5883 (IDE) \u3092\u4f7f\u7528\u3059\u308b: \u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306e\u52b9\u7387\u3092\u5411\u4e0a\u3055\u305b\u308b\u305f\u3081\u306b\u3001PyCharm\u3001Visual Studio Code \u306a\u3069\u306e Python \u7d71\u5408\u958b\u767a\u74b0\u5883 (IDE) \u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002 \u3053\u308c\u3089\u306e IDE \u306f\u3001\u30b3\u30fc\u30c9\u88dc\u5b8c\u3001\u69cb\u6587\u306e\u5f37\u8abf\u8868\u793a\u3001\u30b3\u30fc\u30c9\u306e\u30c7\u30d0\u30c3\u30b0\u306a\u3069\u3092\u63d0\u4f9b\u3057\u3001Python \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u3088\u308a\u52b9\u7387\u7684\u306b\u958b\u767a\u3059\u308b\u306e\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002<\/li>\n\n\n\n<li>Python\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u3092\u5b66\u3076:Python\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306e\u521d\u5fc3\u8005\u306e\u5834\u5408\u306f\u3001Python\u306e\u57fa\u672c\u7684\u306a\u69cb\u6587\u3068\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30b9\u30ad\u30eb\u3092\u7fd2\u5f97\u3059\u308b\u305f\u3081\u306ePython\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u3001\u66f8\u7c4d\u3001\u304a\u3088\u3073\u30d3\u30c7\u30aa\u3092\u5b66\u3076\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u516c\u5f0f\u306ePython\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8(<a href=\"https:\/\/docs.python.org\/%EF%BC%89%E6%98%AF%E4%B8%80%E4%B8%AA%E5%BE%88%E5%A5%BD%E7%9A%84%E5%AD%A6%E4%B9%A0%E8%B5%84%E6%BA%90%EF%BC%8C%E6%B6%B5%E7%9B%96%E4%BA%86\">https:\/\/docs.python.org\/)\u306f\u3001Python\u3092\u30ab\u30d0\u30fc\u3059\u308b\u512a\u308c\u305f\u5b66\u7fd2\u30ea\u30bd\u30fc\u30b9\u3067\u3059<\/a>\u3002<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1610\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u3055\u307e\u3056\u307e\u306a\u6a5f\u80fd\u3068\u4f7f\u7528\u6cd5\u3002 \u3055\u3089\u306b\u3001\u6b21\u306e\u3088\u3046\u306a\u4ed6\u306e\u591a\u304f\u306e\u5b66\u7fd2\u30ea\u30bd\u30fc\u30b9\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Python\u306e\u7df4\u7fd2:\u521d\u5fc3\u8005\u5411\u3051\u306e\u7121\u6599\u306ePython\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u96fb\u5b50\u30d6\u30c3\u30af(<a href=\"https:\/\/www.practicepython.org\/%EF%BC%89\">https:\/\/www.practicepython.org\/)\u3002<\/a><\/li>\n\n\n\n<li>Python \u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb \u2013 W3Schools: \u57fa\u672c\u7684\u306a\u69cb\u6587\u3068\u4e00\u822c\u7684\u306a\u6a5f\u80fd (<a href=\"https:\/\/www.w3schools.com\/python\/%EF%BC%89\">https:\/\/www.w3schools.com\/python\/)<\/a>&nbsp;\u3092\u30ab\u30d0\u30fc\u3059\u308b\u7c21\u6f54\u306a Python \u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u3002<\/li>\n\n\n\n<li>Python\u30af\u30e9\u30c3\u30b7\u30e5\u30b3\u30fc\u30b9:\u521d\u5fc3\u8005\u3068\u7d4c\u9a13\u8c4a\u5bcc\u306a\u958b\u767a\u8005\u306e\u4e21\u65b9\u306e\u305f\u3081\u306e\u30d9\u30b9\u30c8\u30bb\u30e9\u30fc\u306ePython\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30d6\u30c3\u30af(<a href=\"https:\/\/www.nostarch.com\/pythoncrashcourse%EF%BC%89\">https:\/\/www.nostarch.com\/pythoncrashcourse)\u3002<\/a><\/li>\n\n\n\n<li>Python\u3092\u96e3\u3057\u3044\u65b9\u6cd5\u3067\u5b66\u3076:\u591a\u304f\u306e\u7df4\u7fd2\u3067Python\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u3092\u5b66\u3076\u305f\u3081\u306e\u672c(<a href=\"https:\/\/learnpythonthehardway.org\/%EF%BC%89\">https:\/\/learnpythonthehardway.org\/<\/a>)<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\" start=\"6\">\n<li>Python \u30e9\u30a4\u30d6\u30e9\u30ea\u3068\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3092\u5b66\u3076: Python \u306e\u57fa\u672c\u7684\u306a\u69cb\u6587\u3068\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0 \u30b9\u30ad\u30eb\u3092\u7fd2\u5f97\u3057\u305f\u3089\u3001\u5b9f\u969b\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u9069\u7528\u3059\u308b\u305f\u3081\u306b\u4e00\u822c\u7684\u306b\u4f7f\u7528\u3055\u308c\u308b Python \u30e9\u30a4\u30d6\u30e9\u30ea\u3068\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3092\u5b66\u3076\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u5b66\u7fd2\u3059\u3079\u304d\u63a8\u5968\u30e9\u30a4\u30d6\u30e9\u30ea\u3068\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002\n<ul class=\"wp-block-list\">\n<li>Django:\u9ad8\u6027\u80fdWeb\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3(<a href=\"https:\/\/www.djangoproject.com\/%EF%BC%89\">https:\/\/www.djangoproject.com\/)<\/a>\u3092\u69cb\u7bc9\u3059\u308b\u305f\u3081\u306e\u6a5f\u80fd\u8c4a\u5bcc\u306aWeb\u958b\u767a\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3002<\/li>\n\n\n\n<li>Flask: \u5c0f\u898f\u6a21\u306a Web \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3068 RESTful API (<a href=\"https:\/\/flask.palletsprojects.com\/%EF%BC%89\">https:\/\/flask.palletsprojects.com\/)<\/a>&nbsp;\u3092\u69cb\u7bc9\u3059\u308b\u305f\u3081\u306e\u8efd\u91cf\u306a Web \u958b\u767a\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3002<\/li>\n\n\n\n<li>NumPy: \u9ad8\u6027\u80fd\u306a\u591a\u6b21\u5143\u914d\u5217\u304a\u3088\u3073\u884c\u5217\u6f14\u7b97 (<a href=\"https:\/\/numpy.org\/%EF%BC%89\">https:\/\/numpy.org\/)<\/a>&nbsp;\u3092\u63d0\u4f9b\u3059\u308b\u6570\u5024\u8a08\u7b97\u7528\u306e\u30e9\u30a4\u30d6\u30e9\u30ea\u3002<\/li>\n\n\n\n<li>Pandas: \u30c7\u30fc\u30bf\u30d5\u30ec\u30fc\u30e0\u306e\u30c7\u30fc\u30bf\u69cb\u9020\u3068\u30c7\u30fc\u30bf\u51e6\u7406\u6a5f\u80fd (<a href=\"https:\/\/pandas.pydata.org\/%EF%BC%89\">https:\/\/pandas.pydata.org\/)<\/a>&nbsp;\u3092\u63d0\u4f9b\u3059\u308b\u30c7\u30fc\u30bf\u5206\u6790\u3068\u51e6\u7406\u306e\u305f\u3081\u306e\u30e9\u30a4\u30d6\u30e9\u30ea\u3002<\/li>\n\n\n\n<li>TensorFlow: \u3055\u307e\u3056\u307e\u306a\u6a5f\u68b0\u5b66\u7fd2\u30bf\u30b9\u30af\u306e\u305f\u3081\u306b Google \u304c\u958b\u767a\u3057\u305f\u5f37\u529b\u306a\u6a5f\u68b0\u5b66\u7fd2\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af (<a href=\"https:\/\/www.tensorflow.org\/%EF%BC%89\">https:\/\/www.tensorflow.org\/)\u3002<\/a><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Python \u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u306b\u53c2\u52a0\u3059\u308b: \u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0 \u30b9\u30ad\u30eb\u3092\u5411\u4e0a\u3055\u305b\u3001\u30d8\u30eb\u30d7\u3092\u5f97\u308b\u305f\u3081\u306b\u3001\u6b21\u306e\u3088\u3046\u306a Python \u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u306b\u53c2\u52a0\u3067\u304d\u307e\u3059\u3002\n<ul class=\"wp-block-list\">\n<li>Stack Overflow: Python (https:\/\/stackoverflow.com\/) \u306b\u95a2\u3059\u308b\u8cea\u554f\u3084\u56de\u7b54\u304c\u3067\u304d\u308b\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0 Q&amp;A \u30b5\u30a4\u30c8<a href=\"https:\/\/stackoverflow.com\/%EF%BC%89\">\u3002<\/a><\/li>\n\n\n\n<li>Python Reddit: Python \u306b\u95a2\u3059\u308b\u8a18\u4e8b\u3001\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8 (<a href=\"https:\/\/www.reddit.com\/r\/Python\/%EF%BC%89\">https:\/\/www.reddit.com\/r\/Python\/)<\/a>&nbsp;\u3092\u5171\u6709\u3057\u3001\u8b70\u8ad6\u3067\u304d\u308b Python \u30b3\u30df\u30e5\u30cb\u30c6\u30a3<\/li>\n\n\n\n<li>Python.org \u30e1\u30fc\u30ea\u30f3\u30b0\u30ea\u30b9\u30c8: Python (https:\/\/mail.python.org\/mailman\/listinfo) \u306b\u95a2\u3059\u308b\u8b70\u8ad6\u3092\u8cfc\u8aad\u3057\u305f\u308a\u53c2\u52a0\u3057\u305f\u308a\u3067\u304d\u308b Python \u306e\u516c\u5f0f\u30e1\u30fc\u30ea\u30f3\u30b0\u30ea\u30b9\u30c8<a href=\"https:\/\/mail.python.org\/mailman\/listinfo%EF%BC%89\">\u3067\u3059\u3002<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<p>Python \u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u3092\u5b66\u3073\u3001\u30e9\u30a4\u30d6\u30e9\u30ea\u3068\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306b\u6163\u308c\u3001\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u306b\u53c2\u52a0\u3059\u308b\u3053\u3068\u3067\u3001Python \u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0 \u30b9\u30ad\u30eb\u3092\u7d99\u7d9a\u7684\u306b\u5411\u4e0a\u3055\u305b\u3001\u5b9f\u969b\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3084\u8ab2\u984c\u306b\u3088\u308a\u3088\u304f\u53d6\u308a\u7d44\u3080\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1610\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>Django\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Django \u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u524d\u306b\u3001Python \u304c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044 (Python 3.6 \u4ee5\u964d\u3092\u63a8\u5968)\u3002 Django\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u65b9\u6cd5\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>pip \u3092\u307e\u3060\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3066\u3044\u306a\u3044\u5834\u5408\u306f\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059: pip \u306f\u3001Python \u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u304a\u3088\u3073\u7ba1\u7406\u3059\u308b\u305f\u3081\u306e Python \u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u30de\u30cd\u30fc\u30b8\u30e3\u30fc\u3067\u3059\u3002 Python 3.4\u4ee5\u964d\u306b\u306f\u30c7\u30d5\u30a9\u30eb\u30c8\u3067pip\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002 \u30bf\u30fc\u30df\u30ca\u30eb\u3067\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5165\u529b\u3059\u308b\u3068\u3001pip\u304c\u3059\u3067\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u308b\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u3067\u304d\u307e\u3059:css\u30b3\u30d4\u30fc\u30b3\u30fc\u30c9 pip\u304c\u307e\u3060\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u306f\u3001\u516c\u5f0f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8(<a href=\"https:\/\/pip.pypa.io\/en\/stable\/installation\/%EF%BC%89%E8%BF%9B%E8%A1%8C%E5%AE%89%E8%A3%85%E3%80%82\">https:\/\/pip.pypa.io\/en\/stable\/installation\/)\u3092\u53c2\u7167\u3057\u3066\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3066\u304f\u3060\u3055\u3044\u3002&nbsp;<\/a><code>pip --version<\/code><\/li>\n\n\n\n<li>\u4eee\u60f3\u74b0\u5883\u3092\u4f5c\u6210\u3059\u308b (\u63a8\u5968): \u4eee\u60f3\u74b0\u5883\u3092\u4f7f\u7528\u3057\u3066\u3001\u7570\u306a\u308b\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u9593\u306e\u4f9d\u5b58\u95a2\u4fc2\u306e\u7af6\u5408\u3092\u56de\u907f\u3057\u307e\u3059\u3002 \u4eee\u60f3\u74b0\u5883\u3092\u4f5c\u6210\u3057\u3066\u30a2\u30af\u30c6\u30a3\u30d6\u5316\u3059\u308b\u65b9\u6cd5\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059\u3002\n<ul class=\"wp-block-list\">\n<li>Windows \u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0: a. \u30b3\u30de\u30f3\u30c9 \u30d7\u30ed\u30f3\u30d7\u30c8\u3092\u958b\u304d\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8 \u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u79fb\u52d5\u3057\u307e\u3059\u3002 b. \u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5165\u529b\u3057\u3066\u3001\u4eee\u60f3\u74b0\u5883\u3092\u4f5c\u6210\u3057\u307e\u3059 (\u4f8b\u3068\u3057\u3066 env): bashCopy \u30b3\u30fc\u30c7\u30c3\u30af\u3002 \u4eee\u60f3\u74b0\u5883\u3092\u30a2\u30af\u30c6\u30a3\u30d6\u5316\u3059\u308b:bashCopy\u30b3\u30fc\u30c9<code>python -m venv env&nbsp;<\/code><code>.\\env\\Scripts\\activate<\/code><\/li>\n\n\n\n<li>macOS \u304a\u3088\u3073 Linux \u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0: a. \u30bf\u30fc\u30df\u30ca\u30eb\u3092\u958b\u304d\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8 \u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u79fb\u52d5\u3057\u307e\u3059\u3002 b. \u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5165\u529b\u3057\u3066\u3001\u4eee\u60f3\u74b0\u5883\u3092\u4f5c\u6210\u3057\u307e\u3059 (\u4f8b\u3068\u3057\u3066 env): bashCopy \u30b3\u30fc\u30c7\u30c3\u30af\u3002 \u4eee\u60f3\u74b0\u5883\u3092\u30a2\u30af\u30c6\u30a3\u30d6\u5316\u3059\u308b:bashCopy\u30b3\u30fc\u30c9<code>python3 -m venv env&nbsp;<\/code><code>source env\/bin\/activate<\/code><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Django \u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb: \u4eee\u60f3\u74b0\u5883\u3092\u30a2\u30af\u30c6\u30a3\u30d6\u306b\u3057\u3066\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u3001\u6700\u65b0\u30d0\u30fc\u30b8\u30e7\u30f3\u306e Django \u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3066\u304f\u3060\u3055\u3044\u3002 \u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc\u3059\u308b\u7279\u5b9a\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u306e Django \u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u306f\u3001\u6b21\u306e\u3088\u3046\u306b Django \u306e\u5f8c\u306b\u8ffd\u52a0\u3067\u304d\u307e\u3059\u3002 \u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc<code>pip install django&nbsp;<\/code><code>==\u7248\u672c\u53f7<\/code><code>pip install django==3.2.8<\/code><\/li>\n\n\n\n<li>\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u306e\u78ba\u8a8d:\u30bf\u30fc\u30df\u30ca\u30eb\u3067\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5165\u529b\u3057\u3066\u3001Django\u304c\u6b63\u5e38\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u305f\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u3057\u307e\u3059:css\u30b3\u30d4\u30fc\u30b3\u30fc\u30c9 Django \u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u756a\u53f7\u304c\u8868\u793a\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u3001\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u306f\u6210\u529f\u3057\u3066\u3044\u307e\u3059\u3002<code>python -m django --version<\/code><\/li>\n<\/ol>\n\n\n\n<p>\u4e0a\u8a18\u306e\u624b\u9806\u3092\u5b8c\u4e86\u3059\u308b\u3068\u3001Django \u3092\u4f7f\u7528\u3057\u3066 Web \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u958b\u767a\u3059\u308b\u6e96\u5099\u304c\u6574\u3044\u307e\u3059\u3002 \u5b9f\u969b\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306f\u3001django-rest-framework (RESTful API \u3092\u69cb\u7bc9\u3059\u308b\u305f\u3081)\u3001django-allauth (\u30e6\u30fc\u30b6\u30fc\u8a8d\u8a3c\u7528) \u306a\u3069\u3001\u4ed6\u306e Django \u95a2\u9023\u306e\u30e9\u30a4\u30d6\u30e9\u30ea\u3084\u30d7\u30e9\u30b0\u30a4\u30f3\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002 \u306a\u3069\u306e\u540c\u69d8\u306e\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3067\u304d\u307e\u3059\u3002<code>pip install package_name<\/code><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1610\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>\u4eee\u60f3\u74b0\u5883\u306e\u69cb\u6210\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u4eee\u60f3\u74b0\u5883\u306f\u3001\u7570\u306a\u308b\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u9593\u306e\u4f9d\u5b58\u95a2\u4fc2\u306e\u7af6\u5408\u3092\u56de\u907f\u3059\u308b\u305f\u3081\u306b\u3001\u5206\u96e2\u3055\u308c\u305f\u74b0\u5883\u306b Python \u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u304a\u3088\u3073\u7ba1\u7406\u3059\u308b\u305f\u3081\u306e Python \u30c4\u30fc\u30eb\u3067\u3059\u3002 \u4eee\u60f3\u74b0\u5883\u3092\u4f5c\u6210\u304a\u3088\u3073\u69cb\u6210\u3059\u308b\u305f\u3081\u306e\u8a73\u7d30\u306a\u624b\u9806\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u4eee\u60f3\u74b0\u5883\u3092\u4f5c\u6210\u3059\u308b: \u4eee\u60f3\u74b0\u5883\u3092\u4f5c\u6210\u3059\u308b\u524d\u306b\u3001Python \u304c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044 (Python 3.6 \u4ee5\u964d\u3092\u63a8\u5968)\u3002<ul><li>Windows \u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0: a. \u30b3\u30de\u30f3\u30c9 \u30d7\u30ed\u30f3\u30d7\u30c8\u3092\u958b\u304d\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8 \u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u79fb\u52d5\u3057\u307e\u3059\u3002 b. \u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5165\u529b\u3057\u3066\u3001\u4eee\u60f3\u74b0\u5883\u3092\u4f5c\u6210\u3057\u307e\u3059 (\u4f8b\u3068\u3057\u3066 env \u3092\u4f7f\u7528): bashCopy \u30b3\u30fc\u30c9<code>python -m venv env<\/code><\/li><li>macOS \u304a\u3088\u3073 Linux \u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0: a. \u30bf\u30fc\u30df\u30ca\u30eb\u3092\u958b\u304d\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8 \u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u79fb\u52d5\u3057\u307e\u3059\u3002 b. \u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5165\u529b\u3057\u3066\u3001\u4eee\u60f3\u74b0\u5883\u3092\u4f5c\u6210\u3057\u307e\u3059 (\u4f8b\u3068\u3057\u3066 env \u3092\u4f7f\u7528): bashCopy \u30b3\u30fc\u30c9<code>python3 -m venv env<\/code><\/li><\/ul>\u4e0a\u8a18\u306e\u30b3\u30de\u30f3\u30c9\u306f\u3001\u4eee\u60f3\u74b0\u5883\u306e\u3059\u3079\u3066\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u542b\u3080\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u4e0b\u306b\u300cenv\u300d\u3068\u3044\u3046\u540d\u524d\u306e\u30d5\u30a9\u30eb\u30c0\u30fc\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u4eee\u60f3\u74b0\u5883\u3092\u30a2\u30af\u30c6\u30a3\u30d6\u5316\u3059\u308b: \u4eee\u60f3\u74b0\u5883\u3092\u4f5c\u6210\u3057\u305f\u3089\u3001\u5206\u96e2\u3055\u308c\u305f\u74b0\u5883\u306b Python \u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3066\u4f7f\u7528\u3059\u308b\u306b\u306f\u3001\u4eee\u60f3\u74b0\u5883\u3092\u30a2\u30af\u30c6\u30a3\u30d6\u5316\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<ul><li>Windows \u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0: \u30b3\u30de\u30f3\u30c9 \u30d7\u30ed\u30f3\u30d7\u30c8\u3067\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5165\u529b\u3057\u3066\u3001\u4eee\u60f3\u74b0\u5883\u3092\u30a2\u30af\u30c6\u30a3\u30d6\u306b\u3057\u307e\u3059\u3002<code>.\\env\\Scripts\\activate<\/code><\/li><li>macOS\u304a\u3088\u3073Linux\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0:\u30bf\u30fc\u30df\u30ca\u30eb\u3067\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5165\u529b\u3057\u3066\u3001\u4eee\u60f3\u74b0\u5883\u3092\u30a2\u30af\u30c6\u30a3\u30d6\u306b\u3057\u307e\u3059\u3002<code>source env\/bin\/activate<\/code><\/li><\/ul>\u4eee\u60f3\u74b0\u5883\u304c\u30a2\u30af\u30c6\u30a3\u30d6\u5316\u3055\u308c\u308b\u3068\u3001\u30bf\u30fc\u30df\u30ca\u30eb\u306e\u30d7\u30ed\u30f3\u30d7\u30c8\u306b\u300c(env)\u300d\u306a\u3069\u306e\u4eee\u60f3\u74b0\u5883\u306e\u540d\u524d\u304c\u8868\u793a\u3055\u308c\u3001\u4eee\u60f3\u74b0\u5883\u304c\u73fe\u5728\u4f7f\u7528\u4e2d\u3067\u3042\u308b\u3053\u3068\u3092\u793a\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30e9\u30a4\u30d6\u30e9\u30ea\u3068\u30c4\u30fc\u30eb\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb: \u30a2\u30af\u30c6\u30a3\u30d6\u5316\u3055\u308c\u305f\u4eee\u60f3\u74b0\u5883\u3067\u306f\u3001pip \u3092\u4f7f\u7528\u3057\u3066\u5fc5\u8981\u306a Python \u30e9\u30a4\u30d6\u30e9\u30ea\u3068\u30c4\u30fc\u30eb\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3067\u304d\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001Django:Copy \u30b3\u30fc\u30c9\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u4e2d\u3001pip \u306f\u73fe\u5728\u306e\u4eee\u60f3\u74b0\u5883\u306b\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u3060\u3051\u3067\u3001\u4ed6\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3084\u30b7\u30b9\u30c6\u30e0\u5168\u4f53\u306e Python \u74b0\u5883\u306b\u306f\u5f71\u97ff\u3057\u307e\u305b\u3093\u3002<code>pip install django<\/code><\/li>\n\n\n\n<li>\u30e9\u30a4\u30d6\u30e9\u30ea\u3068\u30c4\u30fc\u30eb\u3092\u66f4\u65b0\u3059\u308b: \u4eee\u60f3\u74b0\u5883\u3067\u30e9\u30a4\u30d6\u30e9\u30ea\u3068\u30c4\u30fc\u30eb\u3092\u66f4\u65b0\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u306f\u3001\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059: cssCopy \u30b3\u30fc\u30c9\u3002\u3053\u3053\u3067\u3001&#8221;package_name&#8221; \u3092\u5b9f\u969b\u306e\u30e9\u30a4\u30d6\u30e9\u30ea\u540d\u306b\u7f6e\u304d\u63db\u3048\u307e\u3059\u3002<code>pip install --upgrade package_name<\/code><\/li>\n\n\n\n<li>\u4eee\u60f3\u74b0\u5883\u3092\u7121\u52b9\u306b\u3059\u308b: \u4eee\u60f3\u74b0\u5883\u3092\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u304c\u306a\u304f\u306a\u3063\u305f\u3089\u3001\u4eee\u60f3\u74b0\u5883\u3092\u7121\u52b9\u306b\u3057\u3066\u3001\u30b7\u30b9\u30c6\u30e0\u4e0a\u306e\u30b0\u30ed\u30fc\u30d0\u30eb Python \u74b0\u5883\u306b\u623b\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u30bf\u30fc\u30df\u30ca\u30eb\u3067\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5165\u529b\u3057\u307e\u3059\u3002 \u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc \u4eee\u60f3\u74b0\u5883\u304c\u7121\u52b9\u306b\u306a\u3063\u3066\u3044\u308b\u5834\u5408\u3001\u4eee\u60f3\u74b0\u5883\u306e\u540d\u524d\u306f\u30bf\u30fc\u30df\u30ca\u30eb\u306e\u30d7\u30ed\u30f3\u30d7\u30c8\u306b\u8868\u793a\u3055\u308c\u306a\u304f\u306a\u308a\u307e\u3059\u3002<code>deactivate<\/code><\/li>\n<\/ol>\n\n\n\n<p>\u4e0a\u8a18\u306e\u624b\u9806\u3067\u3001\u3042\u306a\u305f\u306f\u3044\u3044\u3048\u3067\u305d\u308c\u3092\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1610\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u540c\u3058\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u5185\u306e\u4eee\u60f3\u74b0\u5883\u3092\u4f7f\u7528\u304a\u3088\u3073\u7ba1\u7406\u3057\u3066\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u9593\u306e\u4f9d\u5b58\u95a2\u4fc2\u304c\u6574\u7136\u3068\u4fdd\u305f\u308c\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002 \u4eee\u60f3\u74b0\u5883\u3092\u3088\u308a\u52b9\u679c\u7684\u306b\u4f7f\u7528\u3059\u308b\u305f\u3081\u306e\u63a8\u5968\u4e8b\u9805\u3068\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"6\">\n<li>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3054\u3068\u306b\u500b\u5225\u306e\u4eee\u60f3\u74b0\u5883\u3092\u4f5c\u6210\u3059\u308b: Python \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3054\u3068\u306b\u500b\u5225\u306e\u4eee\u60f3\u74b0\u5883\u3092\u4f5c\u6210\u3059\u308b\u3068\u3001\u7570\u306a\u308b\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u9593\u306e\u4f9d\u5b58\u95a2\u4fc2\u306e\u7af6\u5408\u3092\u56de\u907f\u3067\u304d\u307e\u3059\u3002 \u4eee\u60f3\u74b0\u5883\u306e\u30d5\u30a9\u30eb\u30c0\u30fc\u3092\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u4fdd\u5b58\u3057\u3066\u3001\u7ba1\u7406\u3068\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u3092\u5bb9\u6613\u306b\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u4eee\u60f3\u74b0\u5883\u3067\u7279\u5b9a\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u306e\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u4f7f\u7528\u3059\u308b: \u5834\u5408\u306b\u3088\u3063\u3066\u306f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u7279\u5b9a\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u306e\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u300cpackage_name\u300d\u3092\u5b9f\u969b\u306e\u30e9\u30a4\u30d6\u30e9\u30ea\u540d\u306b\u7f6e\u304d\u63db\u3048\u3001\u300cversion_number\u300d\u3092\u76ee\u7684\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u756a\u53f7\u306b\u7f6e\u304d\u63db\u3048\u308b\u300c\u30b3\u30fc\u30c9\u306e\u30b3\u30d4\u30fc\u300d\u306a\u3069\u3001\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u6642\u306b\u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u6307\u5b9a\u3067\u304d\u307e\u3059\u3002<code>pip install package_name==version_number<\/code><\/li>\n\n\n\n<li>\u4eee\u60f3\u74b0\u5883\u3067\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u7ba1\u7406\u3059\u308b: \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u4f7f\u7528\u3055\u308c\u3066\u3044\u308b\u30e9\u30a4\u30d6\u30e9\u30ea\u3068\u305d\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u8ffd\u8de1\u3059\u308b\u305f\u3081\u306b\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8 \u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b &#8220;requirements.txt&#8221; \u3068\u3044\u3046\u540d\u524d\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3067\u304d\u307e\u3059\u3002 \u3053\u306e\u30d5\u30a1\u30a4\u30eb\u3067\u306f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u5fc5\u8981\u306a\u3059\u3079\u3066\u306e\u30e9\u30a4\u30d6\u30e9\u30ea\u3068\u305d\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u3092 makefileCopy \u30b3\u30fc\u30c9\u306e\u5f62\u5f0f\u3067\u4e00\u89a7\u8868\u793a\u3057\u307e\u3059\u3002makefileCopy \u30b3\u30fc\u30c9.txt\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3067\u304d\u307e\u3059\u3002 \u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc\u3059\u308b: \u3053\u308c\u306b\u3088\u308a\u3001\u30c1\u30fc\u30e0\u306e\u30b3\u30e9\u30dc\u30ec\u30fc\u30b7\u30e7\u30f3\u3068\u30c7\u30d7\u30ed\u30a4\u4e2d\u306b\u3001\u3059\u3079\u3066\u306e\u958b\u767a\u8005\u3068\u74b0\u5883\u3067\u540c\u3058\u30d0\u30fc\u30b8\u30e7\u30f3\u306e\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u4f7f\u7528\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002<code>package_name1==version_number1 package_name2==version_number2 ...&nbsp;<\/code><code>pip install -r requirements.txt<\/code><\/li>\n\n\n\n<li>\u7d71\u5408\u958b\u767a\u74b0\u5883 (IDE) \u3092\u4f7f\u7528\u3057\u305f\u4eee\u60f3\u74b0\u5883\u306e\u7ba1\u7406: PyCharm\u3001Visual Studio Code \u306a\u3069\u306e\u591a\u304f\u306e\u4e00\u822c\u7684\u306a Python IDE \u306f\u3001\u4eee\u60f3\u74b0\u5883\u306e\u4f5c\u6210\u3068\u7ba1\u7406\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002 IDE \u306e\u4eee\u60f3\u74b0\u5883\u3092\u69cb\u6210\u3057\u3066\u3001\u30b3\u30fc\u30c9\u306e\u8a18\u8ff0\u3001\u5b9f\u884c\u3001\u304a\u3088\u3073\u30c7\u30d0\u30c3\u30b0\u6642\u306b\u5206\u96e2\u30e9\u30a4\u30d6\u30e9\u30ea\u3068\u30c4\u30fc\u30eb\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u4e0a\u8a18\u306e\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u3068\u63a8\u5968\u4e8b\u9805\u306b\u5f93\u3046\u3053\u3068\u3067\u3001\u4eee\u60f3\u74b0\u5883\u3092\u3088\u308a\u52b9\u679c\u7684\u306b\u4f7f\u7528\u3057\u3066\u3001\u3055\u307e\u3056\u307e\u306a\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u9593\u3067\u306e Python \u306e\u4f9d\u5b58\u95a2\u4fc2\u3092\u7ba1\u7406\u3057\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u5b89\u5b9a\u3057\u3066\u5b9f\u884c\u3057\u3001\u4fdd\u5b88\u3092\u5bb9\u6613\u306b\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1610\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u69cb\u9020\u3092\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>2 \/ 2<\/p>\n\n\n\n<p>Django \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306f\u3001\u9069\u5207\u306a\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u69cb\u9020\u306f\u3001\u30b3\u30fc\u30c9\u306e\u8aad\u307f\u3084\u3059\u3055\u3001\u4fdd\u5b88\u6027\u3001\u62e1\u5f35\u6027\u3092\u7dad\u6301\u3059\u308b\u306e\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002 \u5178\u578b\u7684\u306aDjango\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u69cb\u9020\u306e\u8a73\u7d30\u306a\u8aac\u660e\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">luaCopy code<code>myproject\/                 # \u9879\u76ee\u6839\u76ee\u5f55\n|-- myapp\/                 # \u5e94\u7528\u76ee\u5f55\n|   |-- migrations\/        # \u6570\u636e\u5e93\u8fc1\u79fb\u6587\u4ef6\u76ee\u5f55\n|   |   |-- __init__.py\n|   |   `-- 0001_initial.py\n|   |-- static\/            # \u9759\u6001\u6587\u4ef6\u76ee\u5f55\uff08CSS\u3001JavaScript\u3001\u56fe\u7247\u7b49\uff09\n|   |-- templates\/         # HTML \u6a21\u677f\u6587\u4ef6\u76ee\u5f55\n|   |-- admin.py           # Django Admin \u914d\u7f6e\u6587\u4ef6\n|   |-- apps.py            # \u5e94\u7528\u914d\u7f6e\u6587\u4ef6\n|   |-- models.py          # \u6570\u636e\u6a21\u578b\u6587\u4ef6\n|   |-- tests.py           # \u6d4b\u8bd5\u6587\u4ef6\n|   |-- urls.py            # \u5e94\u7528 URL \u914d\u7f6e\u6587\u4ef6\n|   `-- views.py           # \u89c6\u56fe\u6587\u4ef6\uff08\u4e1a\u52a1\u903b\u8f91\uff09\n|-- myproject\/             # \u9879\u76ee\u914d\u7f6e\u76ee\u5f55\n|   |-- __init__.py\n|   |-- asgi.py            # ASGI \u914d\u7f6e\u6587\u4ef6\n|   |-- settings.py        # \u9879\u76ee\u8bbe\u7f6e\u6587\u4ef6\n|   |-- urls.py            # \u9879\u76ee URL \u914d\u7f6e\u6587\u4ef6\n|   `-- wsgi.py            # WSGI \u914d\u7f6e\u6587\u4ef6\n|-- media\/                 # \u5a92\u4f53\u6587\u4ef6\u76ee\u5f55\uff08\u7528\u6237\u4e0a\u4f20\u7684\u6587\u4ef6\uff09\n|-- venv\/                  # \u865a\u62df\u73af\u5883\u76ee\u5f55\uff08\u53ef\u9009\uff09\n|-- .gitignore             # Git \u5ffd\u7565\u6587\u4ef6\u914d\u7f6e\uff08\u53ef\u9009\uff09\n|-- manage.py              # Django \u7ba1\u7406\u811a\u672c\n`-- requirements.txt       # Python \u4f9d\u8d56\u5e93\u5217\u8868\uff08\u53ef\u9009\uff09\n<\/code><\/pre>\n\n\n\n<p>\u6b21\u306b\u3001\u5404\u30d5\u30a1\u30a4\u30eb\u3068\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u8a73\u7d30\u306a\u8aac\u660e\u3092\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>myproject\/: \u3059\u3079\u3066\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3001\u69cb\u6210\u30d5\u30a1\u30a4\u30eb\u3001\u304a\u3088\u3073\u30ea\u30bd\u30fc\u30b9\u3092\u542b\u3080\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30eb\u30fc\u30c8\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3002<\/li>\n\n\n\n<li>myapp\/: \u30b9\u30bf\u30f3\u30c9\u30a2\u30ed\u30f3\u306e Django \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u542b\u3080\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3002 \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u306f\u8907\u6570\u306e\u30a2\u30d7\u30ea\u3092\u542b\u3081\u308b\u3053\u3068\u304c\u3067\u304d\u3001\u305d\u308c\u305e\u308c\u304c\u7279\u5b9a\u306e\u6a5f\u80fd\u3092\u62c5\u5f53\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>myapp\/migrations\/: Django \u306b\u3088\u3063\u3066\u81ea\u52d5\u7684\u306b\u751f\u6210\u3055\u308c\u308b\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u79fb\u884c\u30d5\u30a1\u30a4\u30eb\u3092\u683c\u7d0d\u3059\u308b\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u79fb\u884c\u30d5\u30a1\u30a4\u30eb\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3002<\/li>\n\n\n\n<li>myapp\/static\/: \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u5185\u306e CSS\u3001JavaScript\u3001\u753b\u50cf\u306a\u3069\u306e\u9759\u7684\u30ea\u30bd\u30fc\u30b9\u3092\u683c\u7d0d\u3059\u308b\u9759\u7684\u30d5\u30a1\u30a4\u30eb\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3002<\/li>\n\n\n\n<li>myapp\/templates\/: \u30a6\u30a7\u30d6\u30da\u30fc\u30b8\u306e\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u306b\u4f7f\u7528\u3055\u308c\u308b HTML \u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30d5\u30a1\u30a4\u30eb\u3092\u683c\u7d0d\u3059\u308b HTML \u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30d5\u30a1\u30a4\u30eb\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3067\u3059\u3002<\/li>\n\n\n\n<li>myapp\/admin .py: Django Admin \u30d0\u30c3\u30af\u30b0\u30e9\u30a6\u30f3\u30c9\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30a4\u30b9\u3092\u5b9a\u7fa9\u304a\u3088\u3073\u8a2d\u5b9a\u3059\u308b Django Admin \u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3002<\/li>\n\n\n\n<li>myapp\/apps.py: \u30a2\u30d7\u30ea\u306e\u30e1\u30bf\u30c7\u30fc\u30bf\u3092\u69cb\u6210\u3059\u308b\u30a2\u30d7\u30ea\u69cb\u6210\u30d5\u30a1\u30a4\u30eb\u3002<\/li>\n\n\n\n<li>myapp\/models.py: \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30c7\u30fc\u30bf\u69cb\u9020\u3068\u95a2\u4fc2\u3092\u5b9a\u7fa9\u3059\u308b\u30c7\u30fc\u30bf\u30e2\u30c7\u30eb\u30d5\u30a1\u30a4\u30eb\u3002<\/li>\n\n\n\n<li>myapp\/tests.py: \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u5358\u4f53\u30c6\u30b9\u30c8\u3068\u7d71\u5408\u30c6\u30b9\u30c8\u3092\u542b\u3080\u30c6\u30b9\u30c8\u30d5\u30a1\u30a4\u30eb\u3002<\/li>\n\n\n\n<li>myapp\/urls.py: \u30a2\u30d7\u30ea\u306e URL \u3068\u30d3\u30e5\u30fc\u95a2\u6570\u306e\u5bfe\u5fdc\u3092\u5b9a\u7fa9\u3059\u308b\u30a2\u30d7\u30ea URL \u69cb\u6210\u30d5\u30a1\u30a4\u30eb\u3002<\/li>\n\n\n\n<li>myapp\/views.py: \u30a2\u30d7\u30ea\u306e\u30d3\u30b8\u30cd\u30b9 \u30ed\u30b8\u30c3\u30af\u3068 HTTP \u5fdc\u7b54\u306e\u751f\u6210\u3092\u542b\u3080\u30d3\u30e5\u30fc \u30d5\u30a1\u30a4\u30eb\u3002<\/li>\n\n\n\n<li>myproject\/: \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30b0\u30ed\u30fc\u30d0\u30eb\u8a2d\u5b9a\u3092\u683c\u7d0d\u3059\u308b\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u8a2d\u5b9a\u30c7\u30a3\u30ec\u30af\u30c8\u30ea<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1610\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u30d5\u30a1\u30a4\u30eb\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"13\">\n<li>myproject\/<strong>init<\/strong>.py: \u3053\u308c\u304c\u30a4\u30f3\u30dd\u30fc\u30c8\u53ef\u80fd\u306a\u30d1\u30c3\u30b1\u30fc\u30b8\u3067\u3042\u308b\u3053\u3068\u3092 Python \u306b\u4f1d\u3048\u308b\u7a7a\u306e\u521d\u671f\u5316\u30d5\u30a1\u30a4\u30eb\u3002<\/li>\n\n\n\n<li>myproject\/asgi.py: Django \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u7528\u306e\u975e\u540c\u671f\u30a6\u30a7\u30d6\u30b5\u30fc\u30d0\u30fc\u3092\u8a2d\u5b9a\u3059\u308b\u305f\u3081\u306e ASGI (\u975e\u540c\u671f\u30b5\u30fc\u30d0\u30fc\u30b2\u30fc\u30c8\u30a6\u30a7\u30a4\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30a4\u30b9) \u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3002<\/li>\n\n\n\n<li>myproject\/settings.py: \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3001\u30df\u30c9\u30eb\u30a6\u30a7\u30a2\u3001\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30a8\u30f3\u30b8\u30f3\u3001\u9759\u7684\u30d5\u30a1\u30a4\u30eb\u30d1\u30b9\u306a\u3069\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30b0\u30ed\u30fc\u30d0\u30eb\u8a2d\u5b9a\u3092\u542b\u3080\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3002<\/li>\n\n\n\n<li>myproject\/urls.py: \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u5185\u306e\u5404\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e URL \u30d7\u30ec\u30d5\u30a3\u30c3\u30af\u30b9\u3092\u5b9a\u7fa9\u3057\u3001\u5bfe\u5fdc\u3059\u308b\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3 URL \u69cb\u6210\u3092\u542b\u3080\u30d7\u30ed\u30b8\u30a7\u30af\u30c8 URL \u69cb\u6210\u30d5\u30a1\u30a4\u30eb\u3002<\/li>\n\n\n\n<li>myproject\/wsgi.py: Django \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u7528\u306e\u30a6\u30a7\u30d6\u30b5\u30fc\u30d0\u30fc\u3092\u8a2d\u5b9a\u3059\u308b WSGI (Web Server Gateway Interface) \u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3002<\/li>\n\n\n\n<li>media\/:\u753b\u50cf\u3001\u30aa\u30fc\u30c7\u30a3\u30aa\u3001\u30d3\u30c7\u30aa\u306a\u3069\u3001\u30e6\u30fc\u30b6\u30fc\u304c\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3057\u305f\u30d5\u30a1\u30a4\u30eb\u3092\u4fdd\u5b58\u3059\u308b\u30e1\u30c7\u30a3\u30a2\u30d5\u30a1\u30a4\u30eb\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3002<\/li>\n\n\n\n<li>venv\/: \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u4eee\u60f3\u74b0\u5883\u30d5\u30a1\u30a4\u30eb\u304c\u683c\u7d0d\u3055\u308c\u308b\u4eee\u60f3\u74b0\u5883\u30c7\u30a3\u30ec\u30af\u30c8\u30ea (\u30aa\u30d7\u30b7\u30e7\u30f3)\u3002<\/li>\n\n\n\n<li>.gitignore: Git \u306f\u3001Git \u30d0\u30fc\u30b8\u30e7\u30f3\u7ba1\u7406\u30b7\u30b9\u30c6\u30e0\u304c\u7121\u8996\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u30d5\u30a1\u30a4\u30eb\u3068\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u5b9a\u7fa9\u3059\u308b\u30d5\u30a1\u30a4\u30eb\u69cb\u6210 (\u30aa\u30d7\u30b7\u30e7\u30f3) \u3092\u7121\u8996\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>manage.py: \u958b\u767a\u30b5\u30fc\u30d0\u30fc\u306e\u5b9f\u884c\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u4f5c\u6210\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u79fb\u884c\u306e\u5b9f\u884c\u306a\u3069\u3001\u3055\u307e\u3056\u307e\u306a\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u7ba1\u7406\u30bf\u30b9\u30af\u3092\u5b9f\u884c\u3059\u308b Django \u7ba1\u7406\u30b9\u30af\u30ea\u30d7\u30c8\u3002<\/li>\n\n\n\n<li>requirements.txt: \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u5fc5\u8981\u306a Python \u30e9\u30a4\u30d6\u30e9\u30ea\u3068\u305d\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u4e00\u89a7\u8868\u793a\u3059\u308b Python \u4f9d\u5b58\u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u30ea\u30b9\u30c8 (\u30aa\u30d7\u30b7\u30e7\u30f3)\u3002 \u3059\u3079\u3066\u306e\u4f9d\u5b58\u95a2\u4fc2\u306f\u3001\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3067\u304d\u307e\u3059\u3002<code>pip install -r requirements.txt<\/code><\/li>\n<\/ol>\n\n\n\n<p>\u4e0a\u8a18\u306e\u7d39\u4ecb\u306b\u3088\u308a\u3001Django\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u69cb\u9020\u3092\u660e\u78ba\u306b\u7406\u89e3\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u3082\u3061\u308d\u3093\u3001\u5b9f\u969b\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u69cb\u9020\u306f\u3001\u5b9f\u969b\u306e\u30cb\u30fc\u30ba\u306b\u5fdc\u3058\u3066\u8abf\u6574\u3055\u308c\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002 \u3053\u308c\u3089\u306e\u57fa\u672c\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3068\u305d\u306e\u6a5f\u80fd\u3092\u7406\u89e3\u3059\u308b\u3053\u3068\u306f\u3001Django\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u52b9\u7387\u7684\u306b\u6574\u7406\u304a\u3088\u3073\u62e1\u5f35\u3059\u308b\u306e\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1610\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>\u65b0\u3057\u3044\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3068\u30a2\u30d7\u30ea\u3092\u4f5c\u6210\u3059\u308b\u305f\u3081\u306b\u8a73\u7d30\u306b\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>3 \/ 3<\/p>\n\n\n\n<p>Django \u3067\u306f\u3001\u65b0\u3057\u3044\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3068\u30a2\u30d7\u30ea\u3092\u4f5c\u6210\u3059\u308b\u3053\u3068\u304c\u3001\u958b\u767a\u3092\u958b\u59cb\u3059\u308b\u305f\u3081\u306e\u91cd\u8981\u306a\u30b9\u30c6\u30c3\u30d7\u3067\u3059\u3002 \u65b0\u3057\u3044\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3068\u30a2\u30d7\u30ea\u3092\u4f5c\u6210\u3059\u308b\u8a73\u7d30\u306a\u624b\u9806\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059\u3002<\/p>\n\n\n\n<p>\u65b0\u3057\u3044\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3059\u308b\u306b\u306f:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30bf\u30fc\u30df\u30ca\u30eb\u3092\u958b\u304d\u307e\u3059(Windows\u3067\u306f\u30b3\u30de\u30f3\u30c9\u30d7\u30ed\u30f3\u30d7\u30c8\u3092\u958b\u304d\u307e\u3059)\u3002<\/li>\n\n\n\n<li>\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u3001\u65b0\u3057\u3044 Django \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3057\u307e\u3059 (&#8220;myproject&#8221; \u3092\u4f7f\u7528\u3059\u308b\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u540d\u524d\u306b\u7f6e\u304d\u63db\u3048\u307e\u3059)\u3002<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">Copy code<code>django-admin startproject myproject\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"3\">\n<li>\u3053\u308c\u306b\u3088\u308a\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u57fa\u672c\u69cb\u9020\u3068\u69cb\u6210\u30d5\u30a1\u30a4\u30eb\u3092\u542b\u3080\u73fe\u5728\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b &#8220;myproject&#8221; \u3068\u3044\u3046\u540d\u524d\u306e\u30d5\u30a9\u30eb\u30c0\u30fc\u304c\u4f5c\u6210\u3055\u308c\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u65b0\u3057\u3044\u30a2\u30d7\u30ea\u3092\u4f5c\u6210\u3059\u308b\u306b\u306f:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30bf\u30fc\u30df\u30ca\u30eb\u3067\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30eb\u30fc\u30c8\u30c7\u30a3\u30ec\u30af\u30c8\u30ea(\u3064\u307e\u308a\u3001\u4f5c\u6210\u3057\u305f\u3070\u304b\u308a\u306e\u300cmyproject\u300d\u30d5\u30a9\u30eb\u30c0)\u306b\u79fb\u52d5\u3057\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">bashCopy code<code>cd myproject\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\">\n<li>\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u3001\u65b0\u3057\u3044 Django \u30a2\u30d7\u30ea\u3092\u4f5c\u6210\u3057\u307e\u3059 (&#8220;myapp&#8221; \u3092\u4f7f\u7528\u3059\u308b\u30a2\u30d7\u30ea\u306e\u540d\u524d\u306b\u7f6e\u304d\u63db\u3048\u307e\u3059)\u3002<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">Copy code<code>python manage.py startapp myapp\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"3\">\n<li>\u3053\u308c\u306b\u3088\u308a\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30eb\u30fc\u30c8\u306e\u4e0b\u306b\u3001\u30a2\u30d7\u30ea\u306e\u57fa\u672c\u69cb\u9020\u3068\u30d5\u30a1\u30a4\u30eb\u3092\u542b\u3080 &#8220;myapp&#8221; \u3068\u3044\u3046\u540d\u524d\u306e\u30d5\u30a9\u30eb\u30c0\u30fc\u304c\u4f5c\u6210\u3055\u308c\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u6b21\u306b\u3001\u65b0\u3057\u304f\u4f5c\u6210\u3057\u305f\u30a2\u30d7\u30ea\u3092\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u8a2d\u5b9a\u306b\u8ffd\u52a0\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb &#8220;myproject\/settings.py&#8221; \u3092\u958b\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30d5\u30a1\u30a4\u30eb\u306e\u672b\u5c3e\u306b\u3042\u308bINSTALLED_APPS\u306e\u4e00\u89a7\u306b\u3001\u30a2\u30d7\u30ea\u540d (&#8220;myapp&#8221;) \u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002 \u6b21\u306b\u4f8b\u3092\u793a\u3057\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>INSTALLED_APPS = [\n    ...\n    'myapp',\n]\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"3\">\n<li>\u30d5\u30a1\u30a4\u30eb\u3092\u4fdd\u5b58\u3057\u3066\u9589\u3058\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u3053\u306e\u6642\u70b9\u3067\u3001\u65b0\u3057\u3044 Django \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3068\u30a2\u30d7\u30ea\u304c\u6b63\u5e38\u306b\u4f5c\u6210\u3055\u308c\u307e\u3057\u305f\u3002 \u3053\u308c\u3067\u3001\u30c7\u30fc\u30bf\u30e2\u30c7\u30eb\u3001\u30d3\u30e5\u30fc\u3001\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306a\u3069\u306e\u6a5f\u80fd\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u958b\u767a\u3092\u958b\u59cb\u3067\u304d\u307e\u3059\u3002 \u958b\u767a\u4e2d\u306b\u3001\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u30a2\u30d7\u30ea\u3092\u8ffd\u52a0\u3057\u3066\u3001\u3055\u307e\u3056\u307e\u306a\u6a5f\u80fd\u3084\u30d3\u30b8\u30cd\u30b9 \u30ed\u30b8\u30c3\u30af\u3092\u6574\u7406\u304a\u3088\u3073\u7ba1\u7406\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1610\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u65b0\u3057\u3044\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3068\u30a2\u30d7\u30ea\u3092\u4f5c\u6210\u3057\u305f\u3089\u3001\u500b\u3005\u306e\u6a5f\u80fd\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u958b\u767a\u3092\u958b\u59cb\u3067\u304d\u307e\u3059\u3002 \u4e3b\u306a\u958b\u767a\u624b\u9806\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30c7\u30fc\u30bf \u30e2\u30c7\u30eb (models.py): \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u5185\u306e\u30c6\u30fc\u30d6\u30eb\u306b\u5bfe\u5fdc\u3059\u308b\u30a2\u30d7\u30ea\u306e &#8220;models.py&#8221; \u30d5\u30a1\u30a4\u30eb\u3067\u30c7\u30fc\u30bf \u30e2\u30c7\u30eb\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u5358\u7d14\u306a\u30d6\u30ed\u30b0\u30e2\u30c7\u30eb\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django.db import models\n\nclass Post(models.Model):\n    title = models.CharField(max_length=200)\n    content = models.TextField()\n    pub_date = models.DateTimeField()\n\n    def __str__(self):\n        return self.title\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\">\n<li>\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u79fb\u884c: \u30c7\u30fc\u30bf \u30e2\u30c7\u30eb\u3092\u5b9a\u7fa9\u3057\u305f\u3089\u3001\u305d\u308c\u3092\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u30de\u30c3\u30d7\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u307e\u305a\u3001\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u79fb\u884c\u30d5\u30a1\u30a4\u30eb\u3092\u751f\u6210\u3057\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">Copy code<code>python manage.py makemigrations\n<\/code><\/pre>\n\n\n\n<p>\u6b21\u306b\u3001\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u79fb\u884c\u3092\u9069\u7528\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">Copy code<code>python manage.py migrate\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"3\">\n<li>\u30d3\u30e5\u30fc (views.py): \u30a2\u30d7\u30ea\u306e &#8220;views.py&#8221; \u30d5\u30a1\u30a4\u30eb\u3067\u3001HTTP \u8981\u6c42\u3092\u51e6\u7406\u3057\u3066\u5fdc\u7b54\u3092\u8fd4\u3059\u30d3\u30e5\u30fc\u95a2\u6570\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u5358\u7d14\u306a\u30d6\u30ed\u30b0\u30ea\u30b9\u30c8\u30d3\u30e5\u30fc\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django.shortcuts import render\nfrom .models import Post\n\ndef post_list(request):\n    posts = Post.objects.all()\n    return render(request, 'myapp\/post_list.html', {'posts': posts})\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"4\">\n<li>templates\/: \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e &#8220;templates\/&#8221; \u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b HTML \u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u30d6\u30ed\u30b0\u306e\u4e00\u89a7\u3092\u8868\u793a\u3059\u308b &#8220;post_list.html&#8221; \u3068\u3044\u3046\u540d\u524d\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">htmlCopy code<code>{% for post in posts %}\n    &lt;h2&gt;{{ post.title }}&lt;\/h2&gt;\n    &lt;p&gt;{{ post.content }}&lt;\/p&gt;\n{% endfor %}\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"5\">\n<li>URL \u69cb\u6210: \u307e\u305a\u3001\u30a2\u30d7\u30ea\u306e &#8220;urls.py&#8221; \u30d5\u30a1\u30a4\u30eb\u3067 URL \u95a2\u6570\u3068\u30d3\u30e5\u30fc\u95a2\u6570\u306e\u5bfe\u5fdc\u3092\u5b9a\u7fa9\u3057\u307e\u3059 (\u5b58\u5728\u3057\u306a\u3044\u5834\u5408\u306f\u4f5c\u6210\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059)\u3002 \u4f8b\u3048\u3070\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django.urls import path\nfrom . import views\n\nurlpatterns = [\n    path('', views.post_list, name='post_list'),\n]\n<\/code><\/pre>\n\n\n\n<p>\u6b21\u306b\u3001\u30a2\u30d7\u30ea\u306e URL \u69cb\u6210\u3092\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e urls.py \u30d5\u30a1\u30a4\u30eb\u306b\u542b\u3081\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django.contrib import admin\nfrom django.urls import path, include\n\nurlpatterns = [\n    path('admin\/', admin.site.urls),\n    path('myapp\/', include('myapp.urls')),\n]\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"6\">\n<li>\u958b\u767a\u30b5\u30fc\u30d0\u30fc\u3092\u5b9f\u884c\u3059\u308b: \u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3057\u3066 Django \u958b\u767a\u30b5\u30fc\u30d0\u30fc\u3092\u8d77\u52d5\u3057\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">Copy code<code>python manage.py runserver\n<\/code><\/pre>\n\n\n\n<p>\u30d6\u30e9\u30a6\u30b6\u306e\u300c<a href=\"http:\/\/127.0.0.1:8000\/myapp\/\">http:\/\/127.0.0.1:8000\/myapp\/<\/a>\u300d\u306b\u30a2\u30af\u30bb\u30b9\u3057\u3066\u30d6\u30ed\u30b0\u4e00\u89a7\u30da\u30fc\u30b8\u3092\u8868\u793a\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<p>\u3053\u308c\u306f\u3001Django \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3068\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u57fa\u672c\u7684\u306a\u958b\u767a\u30d7\u30ed\u30bb\u30b9\u3067\u3059\u3002 \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30cb\u30fc\u30ba\u306b\u5fdc\u3058\u3066\u3001\u30c7\u30fc\u30bf\u30e2\u30c7\u30eb\u3001\u30d3\u30e5\u30fc\u3001\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3001\u304a\u3088\u3073Django Admin\u3001\u30d5\u30a9\u30fc\u30e0\u3001\u30e6\u30fc\u30b6\u30fc\u8a8d\u8a3c\u306a\u3069\u306e\u4ed6\u306e\u6a5f\u80fd\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u5f15\u304d\u7d9a\u304d\u8ffd\u52a0\u3067\u304d\u307e\u3059\u3002 \u958b\u767a\u4e2d\u306f\u3001Django \u306e\u30d9\u30b9\u30c8 \u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u3068\u8a2d\u8a08\u30d1\u30bf\u30fc\u30f3\u306b\u5f93\u3063\u3066\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304c\u8aad\u307f\u3084\u3059\u304f\u3001\u4fdd\u5b88\u3057\u3084\u3059\u304f\u3001\u62e1\u5f35\u53ef\u80fd\u3067\u3042\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1610\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>\u30e2\u30c7\u30eb\u306e\u57fa\u672c\u6982\u5ff5\u3092\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Django \u3067\u306f\u3001\u30e2\u30c7\u30eb\u306f\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u5185\u306e\u30c7\u30fc\u30bf\u306e\u69cb\u9020\u3068\u52d5\u4f5c\u3092\u8a18\u8ff0\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u308b\u91cd\u8981\u306a\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3067\u3059\u3002 \u30e2\u30c7\u30eb\u306f\u901a\u5e38\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u5185\u306e\u30c6\u30fc\u30d6\u30eb\u306b\u5bfe\u5fdc\u3057\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u30c7\u30fc\u30bf\u3092\u683c\u7d0d\u3057\u307e\u3059\u3002 \u30e2\u30c7\u30eb\u306f\u3001\u30c7\u30fc\u30bf\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u3001\u30c7\u30fc\u30bf\u578b\u3001\u304a\u3088\u3073\u30c7\u30fc\u30bf\u9593\u306e\u30ea\u30ec\u30fc\u30b7\u30e7\u30f3\u30b7\u30c3\u30d7\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002 \u30e2\u30c7\u30eb\u3092\u901a\u3058\u3066\u3001Django\u306f\u30c7\u30fc\u30bf\u3068\u5bfe\u8a71\u3059\u308bSQL\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u3092\u81ea\u52d5\u7684\u306b\u751f\u6210\u3067\u304d\u308b\u305f\u3081\u3001\u958b\u767a\u30d7\u30ed\u30bb\u30b9\u304c\u5927\u5e45\u306b\u7c21\u7d20\u5316\u3055\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<p>Django \u30e2\u30c7\u30eb\u306e\u57fa\u672c\u7684\u306a\u6982\u5ff5\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30d5\u30a3\u30fc\u30eb\u30c9: \u30d5\u30a3\u30fc\u30eb\u30c9\u306f\u3001\u6587\u5b57\u5217\u3001\u6574\u6570\u3001\u65e5\u4ed8\u306a\u3069\u3001\u30e2\u30c7\u30eb\u5185\u306e\u30c7\u30fc\u30bf\u9805\u76ee\u3092\u8868\u3057\u307e\u3059\u3002 \u5404\u30d5\u30a3\u30fc\u30eb\u30c9\u306f\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9 \u30c6\u30fc\u30d6\u30eb\u306e\u5217\u306b\u5bfe\u5fdc\u3057\u307e\u3059\u3002 \u30e2\u30c7\u30eb\u3067\u306f\u3001\u30d5\u30a3\u30fc\u30eb\u30c9\u306f\u901a\u5e38\u3001Django \u306b\u3088\u3063\u3066\u63d0\u4f9b\u3055\u308c\u308b\u7279\u5b9a\u306e\u30d5\u30a3\u30fc\u30eb\u30c9 \u30af\u30e9\u30b9 ( \u306a\u3069) \u3092\u4f7f\u7528\u3057\u3066\u5b9a\u7fa9\u3055\u308c\u307e\u3059\u3002 \u3053\u308c\u3089\u306e\u30d5\u30a3\u30fc\u30eb\u30c9 \u30af\u30e9\u30b9\u306f\u3001\u30c7\u30fc\u30bf\u306e\u5165\u529b\u898f\u5247\u3001\u578b\u5909\u63db\u306a\u3069\u306e\u30bf\u30b9\u30af\u3092\u51e6\u7406\u3057\u307e\u3059\u3002<code>CharField<\/code><code>IntegerField<\/code><code>DateField<\/code><\/li>\n\n\n\n<li>\u5c5e\u6027: \u5c5e\u6027\u306f\u30e2\u30c7\u30eb \u30af\u30e9\u30b9\u306e\u30e1\u30f3\u30d0\u30fc\u5909\u6570\u3067\u3042\u308a\u3001\u30e2\u30c7\u30eb\u306e\u72b6\u614b\u3092\u8868\u3059\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002 \u30e2\u30c7\u30eb\u306e\u5404\u30d7\u30ed\u30d1\u30c6\u30a3\u306f\u30d5\u30a3\u30fc\u30eb\u30c9\u306b\u30de\u30c3\u30d7\u3055\u308c\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u30c7\u30fc\u30bf\u304c\u683c\u7d0d\u3055\u308c\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30e1\u30bd\u30c3\u30c9: \u30e1\u30bd\u30c3\u30c9\u306f\u3001\u30e2\u30c7\u30eb\u306e\u52d5\u4f5c\u3092\u8868\u3059\u30e2\u30c7\u30eb \u30af\u30e9\u30b9\u306e\u30e1\u30f3\u30d0\u30fc\u95a2\u6570\u3067\u3059\u3002 \u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u3001\u30e2\u30c7\u30eb\u306e\u30d7\u30ed\u30d1\u30c6\u30a3\u306e\u64cd\u4f5c\u3001\u30c7\u30fc\u30bf\u691c\u8a3c\u306e\u5b9f\u884c\u3001\u30d3\u30b8\u30cd\u30b9 \u30ed\u30b8\u30c3\u30af\u306e\u51e6\u7406\u306a\u3069\u3092\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30c6\u30fc\u30d6\u30eb:\u5404Django\u30e2\u30c7\u30eb\u306f\u901a\u5e38\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30c6\u30fc\u30d6\u30eb\u306b\u5bfe\u5fdc\u3057\u3066\u3044\u307e\u3059\u3002 \u30e2\u30c7\u30eb \u30af\u30e9\u30b9\u306e\u30d7\u30ed\u30d1\u30c6\u30a3\u306f\u30c6\u30fc\u30d6\u30eb\u306e\u5217\u306b\u30de\u30c3\u30d7\u3055\u308c\u3001\u30e2\u30c7\u30eb\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306f\u30c6\u30fc\u30d6\u30eb\u306e\u884c\u306b\u5bfe\u5fdc\u3057\u307e\u3059\u3002 Django \u306f\u3001\u30e2\u30c7\u30eb\u306e\u5b9a\u7fa9\u306b\u57fa\u3065\u3044\u3066\u30c6\u30fc\u30d6\u30eb\u69cb\u9020\u3068 SQL \u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u3092\u81ea\u52d5\u7684\u306b\u751f\u6210\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u79fb\u884c: \u30d5\u30a3\u30fc\u30eb\u30c9\u306e\u8ffd\u52a0\u3001\u524a\u9664\u3001\u5909\u66f4\u306a\u3069\u3001\u30e2\u30c7\u30eb\u304c\u5909\u66f4\u3055\u308c\u305f\u5834\u5408\u306f\u3001\u305d\u308c\u3089\u306e\u5909\u66f4\u3092\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u9069\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u79fb\u884c\u306f\u3001Django \u304c\u30e2\u30c7\u30eb\u3068\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u540c\u671f\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3059\u308b\u30e1\u30ab\u30cb\u30ba\u30e0\u3067\u3059\u3002 \u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3059\u308b\u3068\u3001Django \u306f\u81ea\u52d5\u7684\u306b\u79fb\u884c\u30d5\u30a1\u30a4\u30eb\u3092\u751f\u6210\u3057\u3066\u9069\u7528\u3057\u307e\u3059\u3002<code>python manage.py makemigrations<\/code><code>python manage.py migrate<\/code><\/li>\n\n\n\n<li>\u30af\u30a8\u30ea: Django \u3067\u306f\u3001\u30e2\u30c7\u30eb\u306f\u30c7\u30fc\u30bf\u306e\u53d6\u5f97\u3001\u30d5\u30a3\u30eb\u30bf\u30fc\u51e6\u7406\u3001\u4e26\u3079\u66ff\u3048\u3001\u96c6\u8a08\u3092\u884c\u3046\u305f\u3081\u306e\u5f37\u529b\u306a\u30af\u30a8\u30ea API \u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002 \u30af\u30a8\u30ea API \u306e\u4e2d\u5fc3\u3068\u306a\u308b\u306e\u306f\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304b\u3089\u53d6\u5f97\u3057\u305f\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u3092\u8868\u3059 QuerySet \u3067\u3059\u3002 , , \u306a\u3069\u306e\u30e1\u30bd\u30c3\u30c9\u3092\u30c1\u30a7\u30fc\u30f3\u3059\u308b\u3053\u3068\u3067\u3001\u8907\u96d1\u306a\u30af\u30a8\u30ea\u6761\u4ef6\u3092\u69cb\u7bc9\u3067\u304d\u307e\u3059\u3002<code>filter()<\/code><code>exclude()<\/code><code>annotate()<\/code><\/li>\n\n\n\n<li>\u30ea\u30ec\u30fc\u30b7\u30e7\u30f3\u30b7\u30c3\u30d7: \u591a\u304f\u306e\u5834\u5408\u3001\u30e2\u30c7\u30eb\u9593\u306b\u306f 1 \u5bfe 1\u30011 \u5bfe\u591a\u3001\u591a\u5bfe\u591a\u306a\u3069\u306e\u95a2\u9023\u4ed8\u3051\u304c\u3042\u308a\u307e\u3059\u3002 Django \u3067\u306f\u3001\u3053\u308c\u3089\u306e\u95a2\u9023\u4ed8\u3051\u306f\u30d5\u30a3\u30fc\u30eb\u30c9 \u30af\u30e9\u30b9 \u3001\u3001\u304a\u3088\u3073 \u306b\u3088\u3063\u3066\u5b9a\u7fa9\u3055\u308c\u307e\u3059\u3002 \u95a2\u9023\u30d5\u30a3\u30fc\u30eb\u30c9\u306f\u3001\u95a2\u9023\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u305f\u3081\u306e\u4fbf\u5229\u306a API \u3092\u63d0\u4f9b\u3057\u306a\u304c\u3089\u3001\u30c7\u30fc\u30bf\u9593\u306e\u53c2\u7167\u3068\u5236\u7d04\u3092\u51e6\u7406\u3057\u307e\u3059\u3002<code>ForeignKey<\/code><code>OneToOneField<\/code><code>ManyToManyField<\/code><\/li>\n<\/ol>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u57fa\u672c\u6982\u5ff5\u3092\u7406\u89e3\u3059\u308b\u3053\u3068\u3067\u3001Django \u30e2\u30c7\u30eb\u3092\u3088\u308a\u6709\u52b9\u306b\u6d3b\u7528\u3057\u3066\u3001\u30c7\u30fc\u30bf\u99c6\u52d5\u578b Web \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u69cb\u7bc9\u3067\u304d\u307e\u3059\u3002 \u30e2\u30c7\u30eb\u306fDjango\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30b3\u30a2\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3067\u3042\u308a\u3001\u305d\u306e\u8a2d\u8a08\u3068\u4f7f\u7528\u3092\u7fd2\u5f97\u3059\u308b\u3053\u3068\u3067\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u5f37\u56fa\u306a\u57fa\u76e4\u304c\u5f97\u3089\u308c\u307e\u3059<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1610\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>2 \/ 2<\/p>\n\n\n\n<p>\u8ca1\u56e3\u3002 \u6b21\u306b\u3001Django \u30e2\u30c7\u30eb\u306e\u9ad8\u5ea6\u306a\u6a5f\u80fd\u3068\u30d9\u30b9\u30c8 \u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u306b\u3064\u3044\u3066\u8aac\u660e\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"8\">\n<li>\u30e1\u30bf \u30af\u30e9\u30b9: \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9 \u30c6\u30fc\u30d6\u30eb\u540d\u3001\u65e2\u5b9a\u306e\u4e26\u3079\u66ff\u3048\u65b9\u6cd5\u3001\u4e00\u610f\u6027\u5236\u7d04\u306a\u3069\u3001\u30e2\u30c7\u30eb\u306e\u30e1\u30bf\u30c7\u30fc\u30bf\u3092\u6307\u5b9a\u3059\u308b &#8220;Meta&#8221; \u3068\u3044\u3046\u540d\u524d\u306e\u5165\u308c\u5b50\u306b\u306a\u3063\u305f\u30af\u30e9\u30b9\u3092\u30e2\u30c7\u30eb\u306b\u5b9a\u7fa9\u3057\u307e\u3059\u3002 \u4f8b\u3048\u3070\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>class Post(models.Model):\n    title = models.CharField(max_length=200)\n    content = models.TextField()\n    pub_date = models.DateTimeField()\n\n    class Meta:\n        ordering = ['-pub_date']\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"9\">\n<li>\u30e2\u30c7\u30eb\u30de\u30cd\u30fc\u30b8\u30e3\u30fc:Django\u306e\u30e2\u30c7\u30eb\u30af\u30e9\u30b9\u306b\u306f\u3001\u30e2\u30c7\u30eb\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u4f5c\u6210\u3001\u53d6\u5f97\u3001\u304a\u3088\u3073\u64cd\u4f5c\u3059\u308b\u305f\u3081\u306e\u300c\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u300d\u3068\u547c\u3070\u308c\u308b\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30de\u30cd\u30fc\u30b8\u30e3\u30fc\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002 \u30af\u30a8\u30ea\u6a5f\u80fd\u3092\u62e1\u5f35\u304a\u3088\u3073\u8abf\u6574\u3059\u308b\u306b\u306f\u3001\u30e2\u30c7\u30eb \u30de\u30cd\u30fc\u30b8\u30e3\u30fc\u3092\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3057\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001&#8221;Post&#8221; \u30e2\u30c7\u30eb\u306e\u6700\u8fd1\u516c\u958b\u3055\u308c\u305f\u8a18\u4e8b\u3092\u53d6\u5f97\u3059\u308b\u30e1\u30bd\u30c3\u30c9\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>class PostManager(models.Manager):\n    def recent_posts(self):\n        return self.filter(pub_date__lte=datetime.now()).order_by('-pub_date')\n\nclass Post(models.Model):\n    title = models.CharField(max_length=200)\n    content = models.TextField()\n    pub_date = models.DateTimeField()\n\n    objects = PostManager()\n<\/code><\/pre>\n\n\n\n<p>\u3053\u306e\u3088\u3046\u306b\u3057\u3066\u3001\u6700\u8fd1\u516c\u958b\u3055\u308c\u305f\u8a18\u4e8b\u3092\u53d6\u5f97\u3059\u308b\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002<code>Post.objects.recent_posts()<\/code><\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"10\">\n<li>\u30e2\u30c7\u30eb\u306e\u7d99\u627f:Django\u306f\u30e2\u30c7\u30eb\u306e\u7d99\u627f\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u304a\u308a\u3001\u65e2\u5b58\u306e\u30e2\u30c7\u30eb\u304b\u3089\u7d99\u627f\u3059\u308b\u3053\u3068\u3067\u65b0\u3057\u3044\u30e2\u30c7\u30eb\u3092\u4f5c\u6210\u3067\u304d\u307e\u3059\u3002 \u3053\u308c\u306b\u3088\u308a\u3001\u30b3\u30fc\u30c9\u306e\u91cd\u8907\u304c\u56de\u907f\u3055\u308c\u3001\u4fdd\u5b88\u6027\u304c\u5411\u4e0a\u3057\u307e\u3059\u3002 Django \u306f\u3001\u62bd\u8c61\u57fa\u672c\u30af\u30e9\u30b9\u3001\u8907\u6570\u30c6\u30fc\u30d6\u30eb\u7d99\u627f\u3001\u30d7\u30ed\u30ad\u30b7 \u30e2\u30c7\u30eb\u306e 3 \u7a2e\u985e\u306e\u30e2\u30c7\u30eb\u7d99\u627f\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30c7\u30fc\u30bf\u306e\u691c\u8a3c: \u591a\u304f\u306e\u5834\u5408\u3001\u30c7\u30fc\u30bf\u306e\u691c\u8a3c\u306f\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u4fdd\u5b58\u3059\u308b\u524d\u306b\u5fc5\u8981\u306b\u306a\u308a\u307e\u3059\u3002 \u30e2\u30c7\u30eb\u30e1\u30bd\u30c3\u30c9\u3067Django\u306e\u691c\u8a3c\u95a2\u6570\u3092\u4f7f\u7528\u3057\u3066\u3001\u30c7\u30fc\u30bf\u691c\u8a3c\u3092\u5b9f\u884c\u3067\u304d\u307e\u3059\u3002 \u4f8b\u3048\u3070\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django.core.exceptions import ValidationError\n\nclass Post(models.Model):\n    title = models.CharField(max_length=200)\n    content = models.TextField()\n    pub_date = models.DateTimeField()\n\n    def clean(self):\n        if len(self.title) &lt; 5:\n            raise ValidationError('Title must be at least 5 characters long.')\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"12\">\n<li>\u30b7\u30b0\u30ca\u30eb:D Jango\u306e\u30e2\u30c7\u30eb\u306b\u306f\u3001\u300cpre_save\u300d\u3001\u300cpost_save\u300d\u3001\u300cpre_delete\u300d\u3001\u300cpost_delete\u300d\u306a\u3069\u306e\u7d44\u307f\u8fbc\u307f\u4fe1\u53f7\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002 \u3053\u308c\u3089\u306e\u4fe1\u53f7\u3092\u30ea\u30c3\u30b9\u30f3\u3059\u308b\u3053\u3068\u3067\u3001\u7279\u5b9a\u306e\u30a2\u30af\u30b7\u30e7\u30f3\u3092\u5b9f\u884c\u3067\u304d\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u65b0\u3057\u3044\u8a18\u4e8b\u304c\u516c\u958b\u3055\u308c\u308b\u305f\u3073\u306b\u7ba1\u7406\u8005\u306b\u901a\u77e5\u3059\u308b\u30e1\u30fc\u30eb\u3092\u9001\u4fe1\u3057\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django.db.models.signals import post_save\nfrom django.dispatch import receiver\n\n@receiver(post_save, sender=Post)\ndef notify_admin(sender, instance, created, **kwargs):\n    if created:\n        send_email_to_admin(instance)\n<\/code><\/pre>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u9ad8\u5ea6\u306a\u6a5f\u80fd\u3068\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u3092\u7fd2\u5f97\u3059\u308b\u3053\u3068\u3067\u3001Django\u30e2\u30c7\u30eb\u3092\u6d3b\u7528\u3057\u3066\u5f37\u529b\u3067\u30b9\u30b1\u30fc\u30e9\u30d6\u30eb\u306aWeb\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u69cb\u7bc9\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002 \u30e2\u30c7\u30eb\u3092\u9069\u5207\u306b\u8a2d\u8a08\u3057\u3066\u4f7f\u7528\u3059\u308b\u65b9\u6cd5\u3092\u7406\u89e3\u3059\u308b\u3053\u3068\u3067\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u8aad\u307f\u3084\u3059\u3055\u3001\u4fdd\u5b88\u6027\u3001\u62e1\u5f35\u6027\u304c\u5411\u4e0a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1610\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Django \u30e2\u30c7\u30eb\u306e\u57fa\u672c\u6a5f\u80fd\u3068\u9ad8\u5ea6\u306a\u6a5f\u80fd\u306b\u6163\u308c\u305f\u3089\u3001\u3044\u304f\u3064\u304b\u306e\u30d8\u30eb\u30d1\u30fc\u30c4\u30fc\u30eb\u3068\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u8a66\u3057\u3066\u3001\u958b\u767a\u52b9\u7387\u3092\u5411\u4e0a\u3055\u305b\u3001\u30e2\u30c7\u30eb\u306e\u6a5f\u80fd\u3092\u62e1\u5f35\u3067\u304d\u307e\u3059\u3002 \u8a66\u3059\u306e\u306b\u63a8\u5968\u3055\u308c\u308b\u30c4\u30fc\u30eb\u3068\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Django\u30c7\u30d0\u30c3\u30b0\u30c4\u30fc\u30eb\u30d0\u30fc:\u3053\u308c\u306fDjango\u958b\u767a\u7528\u306e\u30c7\u30d0\u30c3\u30b0\u30c4\u30fc\u30eb\u30d0\u30fc\u3067\u3042\u308a\u3001SQL\u30af\u30a8\u30ea\u306e\u8868\u793a\u3001\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u306e\u30c1\u30a7\u30c3\u30af\u3001\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u30dc\u30c8\u30eb\u30cd\u30c3\u30af\u306e\u5206\u6790\u306a\u3069\u3001\u591a\u304f\u306e\u4fbf\u5229\u306a\u6a5f\u80fd\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002 Django \u30c7\u30d0\u30c3\u30b0\u30c4\u30fc\u30eb\u30d0\u30fc\u306f\u3001\u30e2\u30c7\u30eb\u30af\u30a8\u30ea\u306e\u6700\u9069\u5316\u3068\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002<\/li>\n\n\n\n<li>Django\u62e1\u5f35\u6a5f\u80fd:\u3053\u308c\u306f\u3001\u30ab\u30b9\u30bf\u30e0\u7ba1\u7406\u30b3\u30de\u30f3\u30c9\u3001\u6539\u5584\u3055\u308c\u305f\u30b7\u30a7\u30eb\u3001\u8ffd\u52a0\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30d5\u30a3\u30fc\u30eb\u30c9\u306a\u3069\u3001\u591a\u304f\u306e\u4fbf\u5229\u306a\u62e1\u5f35\u6a5f\u80fd\u3092\u542b\u3080\u30e9\u30a4\u30d6\u30e9\u30ea\u3067\u3059\u3002 Django \u62e1\u5f35\u6a5f\u80fd\u306f\u3001\u958b\u767a\u30d7\u30ed\u30bb\u30b9\u3092\u7c21\u7d20\u5316\u3057\u3001\u30e2\u30c7\u30eb\u306e\u6a5f\u80fd\u3092\u62e1\u5f35\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>django-filter: \u3053\u308c\u306f Django \u7528\u306e\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\u30e9\u30a4\u30d6\u30e9\u30ea\u3067\u3001\u30af\u30a8\u30ea\u30d1\u30e9\u30e1\u30fc\u30bf\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\u3001\u30ab\u30b9\u30bf\u30e0\u30d5\u30a3\u30eb\u30bf\u306a\u3069\u306e\u30b7\u30f3\u30d7\u30eb\u3067\u67d4\u8edf\u306a\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\u6a5f\u80fd\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002 Django-Filter\u306f\u3001\u8907\u96d1\u306a\u30c7\u30fc\u30bf\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\u304a\u3088\u3073\u691c\u7d22\u6a5f\u80fd\u3092\u3059\u3070\u3084\u304f\u5b9f\u88c5\u3059\u308b\u306e\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002<\/li>\n\n\n\n<li>django-rest-framework: \u3053\u308c\u306f\u3001\u30b7\u30ea\u30a2\u30e9\u30a4\u30bc\u30fc\u30b7\u30e7\u30f3\u3001\u30da\u30fc\u30b8\u30f3\u30b0\u3001\u8a8d\u8a3c\u306a\u3069\u306e\u591a\u304f\u306e\u4fbf\u5229\u306a\u6a5f\u80fd\u3092\u63d0\u4f9b\u3059\u308b RESTful API \u3092\u69cb\u7bc9\u3059\u308b\u305f\u3081\u306e\u30e9\u30a4\u30d6\u30e9\u30ea\u3067\u3059\u3002 \u30e2\u30c7\u30eb\u306bAPI\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30a4\u30b9\u3092\u63d0\u4f9b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u306f\u3001django-rest-framework\u304c\u9069\u3057\u3066\u3044\u307e\u3059\u3002<\/li>\n\n\n\n<li>django-haystack: \u3053\u308c\u306f\u3001Elasticsearch\u3001Solr \u306a\u3069\u306e\u8907\u6570\u306e\u691c\u7d22\u30a8\u30f3\u30b8\u30f3\u3092\u30b5\u30dd\u30fc\u30c8\u3059\u308b\u5168\u6587\u691c\u7d22\u6a5f\u80fd\u3092\u69cb\u7bc9\u3059\u308b\u305f\u3081\u306e\u30e9\u30a4\u30d6\u30e9\u30ea\u3067\u3059\u3002 Django-Haystack\u306f\u3001\u30e2\u30c7\u30eb\u306b\u9ad8\u6027\u80fd\u306a\u691c\u7d22\u6a5f\u80fd\u3092\u5b9f\u88c5\u3059\u308b\u306e\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002<\/li>\n\n\n\n<li>django-crispy-forms: \u3053\u308c\u306f\u3001\u30d5\u30a9\u30fc\u30e0\u306e\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u3092\u6700\u9069\u5316\u3059\u308b\u305f\u3081\u306e\u30e9\u30a4\u30d6\u30e9\u30ea\u3067\u3042\u308a\u3001\u30b7\u30f3\u30d7\u30eb\u3067\u67d4\u8edf\u306a\u30d5\u30a9\u30fc\u30e0\u30ec\u30a4\u30a2\u30a6\u30c8\u3068\u30b9\u30bf\u30a4\u30eb\u5236\u5fa1\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002 \u30e2\u30c7\u30eb\u95a2\u9023\u306e\u30d5\u30a9\u30fc\u30e0\u3067\u4f5c\u696d\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u306f\u3001Django-crispy-forms\u3092\u4f7f\u7528\u3057\u3066\u958b\u767a\u52b9\u7387\u3068\u30e6\u30fc\u30b6\u30fc\u30a8\u30af\u30b9\u30da\u30ea\u30a8\u30f3\u30b9\u3092\u5411\u4e0a\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>django-braces: \u3053\u308c\u306f\u3001\u30ed\u30b0\u30a4\u30f3\u8981\u4ef6\u3001\u30d1\u30fc\u30df\u30c3\u30b7\u30e7\u30f3\u8981\u4ef6\u3001AJAX \u30ec\u30b9\u30dd\u30f3\u30b9\u306a\u3069\u3001\u591a\u304f\u306e\u4fbf\u5229\u306a\u30df\u30c3\u30af\u30b9\u30a4\u30f3\u3092\u542b\u3080\u30e9\u30a4\u30d6\u30e9\u30ea\u3067\u3059\u3002 Django \u4e2d\u62ec\u5f27\u306f\u3001\u30d3\u30e5\u30fc\u3068\u30e2\u30c7\u30eb\u306e\u958b\u767a\u3092\u7c21\u7d20\u5316\u3059\u308b\u306e\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u30c4\u30fc\u30eb\u3068\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u63a2\u7d22\u3057\u3066\u5b66\u7fd2\u3059\u308b\u3053\u3068\u3067\u3001Django \u30e2\u30c7\u30eb\u3092\u4f7f\u7528\u3057\u3066\u30ea\u30c3\u30c1\u3067\u5f37\u529b\u306a Web \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u3088\u308a\u52b9\u7387\u7684\u306b\u69cb\u7bc9\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002 Django\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u3068\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u306b\u8ffd\u3044\u3064\u304f\u305f\u3081\u306b\u30b9\u30ad\u30eb\u3068\u77e5\u8b58\u3092\u7d76\u3048\u305a\u5411\u4e0a\u3055\u305b\u308b\u3053\u3068\u306f\u3001Django\u958b\u767a\u8005\u3068\u3057\u3066\u6210\u529f\u3059\u308b\u306e\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1610\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>\u30e2\u30c7\u30eb\u306e\u4f5c\u6210\u3068\u4fee\u6b63\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u30e2\u30c7\u30eb\u306e\u4f5c\u6210\u3068\u5909\u66f4\u306f\u3001Django \u958b\u767a\u30d7\u30ed\u30bb\u30b9\u306e\u4e00\u822c\u7684\u306a\u30bf\u30b9\u30af\u3067\u3059\u3002 \u30e2\u30c7\u30eb\u3092\u5b9a\u7fa9\u3059\u308b\u3053\u3068\u3067\u3001Web \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30c7\u30fc\u30bf\u69cb\u9020\u3068\u52d5\u4f5c\u3092\u8a2d\u5b9a\u3067\u304d\u307e\u3059\u3002 Django \u30e2\u30c7\u30eb\u3092\u4f5c\u6210\u304a\u3088\u3073\u5909\u66f4\u3059\u308b\u65b9\u6cd5\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059\u3002<\/p>\n\n\n\n<p>\u30e2\u30c7\u30eb\u3092\u4f5c\u6210\u3059\u308b\u306b\u306f:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Django \u30a2\u30d7\u30ea\u3067\u3001&#8221;models.py&#8221; \u30d5\u30a1\u30a4\u30eb\u3092\u691c\u7d22\u307e\u305f\u306f\u4f5c\u6210\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>&#8220;models.py&#8221; \u3067\u3001&#8221;django.db&#8221; \u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u4e0b\u306b &#8220;models&#8221; \u30af\u30e9\u30b9\u3092\u30a4\u30f3\u30dd\u30fc\u30c8\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u300c\u30e2\u30c7\u30eb\u300d\u304b\u3089\u306e\u7d99\u627f\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002 \u30e2\u30c7\u30eb\u300d\u30af\u30e9\u30b9\u3002 \u30af\u30e9\u30b9\u540d\u306f\u3001&#8221;Book&#8221; \u306e\u3088\u3046\u306b\u5927\u6587\u5b57\u3067\u5358\u6570\u5f62\u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u30af\u30e9\u30b9\u306e\u30d7\u30ed\u30d1\u30c6\u30a3\u306f\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u5185\u306e\u30c6\u30fc\u30d6\u30eb \u30d5\u30a3\u30fc\u30eb\u30c9\u306b\u5bfe\u5fdc\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u5404\u5c5e\u6027\u306b\u9069\u5207\u306a\u30d5\u30a3\u30fc\u30eb\u30c9 \u30bf\u30a4\u30d7\u3092\u5272\u308a\u5f53\u3066\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u6587\u5b57\u30d5\u30a3\u30fc\u30eb\u30c9 (\u6587\u5b57\u5217)\u3001\u6574\u6570\u30d5\u30a3\u30fc\u30eb\u30c9 (\u6574\u6570)\u3001\u65e5\u4ed8\u30d5\u30a3\u30fc\u30eb\u30c9 (\u65e5\u4ed8) \u306a\u3069\u3067\u3059\u3002 \u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u5b9a\u7fa9\u3059\u308b\u3068\u304d\u306b\u3001&#8221;max_length&#8221; (\u6700\u5927\u9577)\u3001&#8221;default&#8221; (\u30c7\u30d5\u30a9\u30eb\u30c8)\u3001&#8221;null&#8221; (null \u3092\u8a31\u53ef\u3059\u308b\u304b\u3069\u3046\u304b) \u306a\u3069\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u8a2d\u5b9a\u3067\u304d\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u305f\u3068\u3048\u3070\u3001\u30d6\u30ed\u30b0\u6295\u7a3f\u3092\u8868\u3059\u5358\u7d14\u306a\u30e2\u30c7\u30eb\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django.db import models\n\nclass Post(models.Model):\n    title = models.CharField(max_length=200)\n    content = models.TextField()\n    pub_date = models.DateTimeField(auto_now_add=True)\n\n    def __str__(self):\n        return self.title\n<\/code><\/pre>\n\n\n\n<p>\u30e2\u30c7\u30eb\u3092\u5909\u66f4\u3059\u308b: \u958b\u767a\u4e2d\u306b\u3001\u30d5\u30a3\u30fc\u30eb\u30c9\u306e\u8ffd\u52a0\u3001\u524a\u9664\u3001\u5909\u66f4\u306a\u3069\u3001\u30e2\u30c7\u30eb\u306e\u5b9a\u7fa9\u3092\u5909\u66f4\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002 \u30e2\u30c7\u30eb\u306e\u5909\u66f4\u306b\u95a2\u3059\u308b\u8003\u616e\u4e8b\u9805\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30d5\u30a3\u30fc\u30eb\u30c9\u306e\u8ffd\u52a0: \u65b0\u3057\u3044\u5c5e\u6027\u3092\u30e2\u30c7\u30eb \u30af\u30e9\u30b9\u306b\u8ffd\u52a0\u3057\u3001\u9069\u5207\u306a\u30d5\u30a3\u30fc\u30eb\u30c9 \u30bf\u30a4\u30d7\u3092\u5272\u308a\u5f53\u3066\u307e\u3059\u3002 \u30d5\u30a3\u30fc\u30eb\u30c9\u306b\u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u304c\u5fc5\u8981\u306a\u5834\u5408\u306f\u3001\u300c\u30c7\u30d5\u30a9\u30eb\u30c8\u300d\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u8a2d\u5b9a\u3067\u304d\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001&#8221;Post&#8221; \u30e2\u30c7\u30eb\u306e\u4f5c\u6210\u8005\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>author = models.ForeignKey(User, on_delete=models.CASCADE)\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\">\n<li>\u30d5\u30a3\u30fc\u30eb\u30c9\u306e\u524a\u9664: \u4e0d\u8981\u306b\u306a\u3063\u305f\u30e2\u30c7\u30eb \u30af\u30e9\u30b9\u306e\u5c5e\u6027\u3092\u524a\u9664\u3057\u307e\u3059\u3002 \u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u524a\u9664\u3059\u308b\u3068\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u5185\u306e\u305d\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u306e\u30c7\u30fc\u30bf\u304c\u524a\u9664\u3055\u308c\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30d5\u30a3\u30fc\u30eb\u30c9\u306e\u5909\u66f4: \u30d5\u30a3\u30fc\u30eb\u30c9\u306e\u30bf\u30a4\u30d7\u307e\u305f\u306f\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u5909\u66f4\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u306f\u3001\u30e2\u30c7\u30eb \u30af\u30e9\u30b9\u3067\u76f4\u63a5\u5909\u66f4\u3067\u304d\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u300c\u6295\u7a3f\u300d\u30e2\u30c7\u30eb\u306e\u300c\u30bf\u30a4\u30c8\u30eb\u300d\u30d5\u30a3\u30fc\u30eb\u30c9\u306e\u6700\u5927\u9577\u3092200\u304b\u3089300\u306b\u5909\u66f4\u3057\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>title = models.CharField(max_length=300)\n<\/code><\/pre>\n\n\n\n<p>\u30e2\u30c7\u30eb\u306e\u5909\u66f4\u304c\u5b8c\u4e86\u3057\u305f\u3089\u3001\u6b21\u306e\u624b\u9806\u3092\u5b9f\u884c\u3057\u3066\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u66f4\u65b0\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u79fb\u884c\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3059\u308b: \u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u3001\u30e2\u30c7\u30eb\u306e\u5909\u66f4\u306b\u57fa\u3065\u3044\u3066\u79fb\u884c\u30d5\u30a1\u30a4\u30eb\u3092\u751f\u6210\u3057\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">bashCopy code<code>python manage.py makemigrations\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\">\n<li>\u79fb\u884c\u306e\u9069\u7528: \u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u3001\u79fb\u884c\u3092\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u9069\u7528\u3057\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">bashCopy code<code>python manage.py migrate\n<\/code><\/pre>\n\n\n\n<p>\u30e2\u30c7\u30eb\u306e\u4f5c\u6210\u3068\u5909\u66f4\u306f\u3001Django \u958b\u767a\u30d7\u30ed\u30bb\u30b9\u306e\u91cd\u8981\u306a\u90e8\u5206\u3067\u3059\u3002 \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u4fdd\u5b88\u6027\u3068\u62e1\u5f35\u6027\u3092\u78ba\u4fdd\u3059\u308b\u306b\u306f\u3001Django \u306e\u30d9\u30b9\u30c8 \u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u306b\u5f93\u3044\u3001\u9069\u5207\u306a\u30c7\u30fc\u30bf\u578b\u3001\u30d5\u30a3\u30fc\u30eb\u30c9 \u30aa\u30d7\u30b7\u30e7\u30f3\u3001\u30ea\u30ec\u30fc\u30b7\u30e7\u30ca\u30eb \u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002 \u5b9f\u969b\u306e\u958b\u767a\u3067\u306f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30cb\u30fc\u30ba\u306b\u5fdc\u3058\u3066\u30e2\u30c7\u30eb\u69cb\u9020\u3092\u7d76\u3048\u305a\u8abf\u6574\u304a\u3088\u3073\u6539\u5584\u3059\u308b\u3053\u3068\u306f\u3054\u304f\u666e\u901a\u306e\u3053\u3068\u3067\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1610\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u6b21\u306b\u3001\u30e2\u30c7\u30eb\u3068\u30c7\u30fc\u30bf\u3092\u3088\u308a\u52b9\u7387\u7684\u306b\u64cd\u4f5c\u3059\u308b\u306e\u306b\u5f79\u7acb\u3064Django\u30e2\u30c7\u30eb\u306e\u9ad8\u5ea6\u306a\u4f7f\u7528\u6cd5\u3068\u30d2\u30f3\u30c8\u306b\u3064\u3044\u3066\u8aac\u660e\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30ab\u30b9\u30bf\u30e0 \u30e2\u30c7\u30eb \u30de\u30cd\u30fc\u30b8\u30e3\u30fc: \u30ab\u30b9\u30bf\u30e0 \u30e2\u30c7\u30eb \u30de\u30cd\u30fc\u30b8\u30e3\u30fc\u3092\u4f5c\u6210\u3059\u308b\u3053\u3068\u3067\u3001\u30ab\u30b9\u30bf\u30e0 \u30af\u30a8\u30ea \u30e1\u30bd\u30c3\u30c9\u3092\u30e2\u30c7\u30eb\u306b\u8ffd\u52a0\u3067\u304d\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001&#8221;Post&#8221; \u30e2\u30c7\u30eb\u306e\u516c\u958b\u8a18\u4e8b\u3092\u53d6\u5f97\u3059\u308b\u30e1\u30bd\u30c3\u30c9\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>class PublishedPostManager(models.Manager):\n    def published(self):\n        return self.filter(published=True)\n\nclass Post(models.Model):\n    title = models.CharField(max_length=200)\n    content = models.TextField()\n    pub_date = models.DateTimeField(auto_now_add=True)\n    published = models.BooleanField(default=False)\n\n    objects = models.Manager()\n    published_posts = PublishedPostManager()\n<\/code><\/pre>\n\n\n\n<p>\u3053\u308c\u3067\u3001[\u3059\u3079\u3066\u306e\u516c\u958b\u6e08\u307f\u8a18\u4e8b\u3092\u53d6\u5f97] \u3092\u4f7f\u7528\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\u3002<code>Post.published_posts.published()<\/code><\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\">\n<li>\u30e2\u30c7\u30eb\u30df\u30c3\u30af\u30b9\u30a4\u30f3\u3092\u4f7f\u7528\u3059\u308b: \u30df\u30c3\u30af\u30b9\u30a4\u30f3\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u5171\u6709\u30d3\u30d8\u30a4\u30d3\u30a2\u3068\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u8907\u6570\u306e\u30e2\u30c7\u30eb\u306b\u8ffd\u52a0\u3067\u304d\u307e\u3059\u3002 \u3053\u308c\u306b\u3088\u308a\u3001\u30b3\u30fc\u30c9\u306e\u91cd\u8907\u304c\u6e1b\u308a\u3001\u4fdd\u5b88\u6027\u304c\u5411\u4e0a\u3057\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u4f5c\u6210\u6642\u523b\u3068\u5909\u66f4\u6642\u523b\u3092\u8ffd\u8de1\u3059\u308b &#8220;TimeStampedMixin&#8221; \u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>class TimeStampedMixin(models.Model):\n    created_at = models.DateTimeField(auto_now_add=True)\n    updated_at = models.DateTimeField(auto_now=True)\n\n    class Meta:\n        abstract = True\n\nclass Post(TimeStampedMixin, models.Model):\n    title = models.CharField(max_length=200)\n    content = models.TextField()\n    published = models.BooleanField(default=False)\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"3\">\n<li>\u30e2\u30c7\u30eb\u30b7\u30b0\u30ca\u30eb\u3092\u4f7f\u7528\u3059\u308b:Django\u306b\u306f\u3001\u30e2\u30c7\u30eb\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u4fdd\u5b58\u3084\u524a\u9664\u306a\u3069\u3001\u7279\u5b9a\u306e\u30a4\u30d9\u30f3\u30c8\u304c\u767a\u751f\u3057\u305f\u3068\u304d\u306b\u30ab\u30b9\u30bf\u30e0\u30a2\u30af\u30b7\u30e7\u30f3\u3092\u5b9f\u884c\u3067\u304d\u308b\u3055\u307e\u3056\u307e\u306a\u7d44\u307f\u8fbc\u307f\u30b7\u30b0\u30ca\u30eb\u304c\u7528\u610f\u3055\u308c\u3066\u3044\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u96c6\u8a08\u30d5\u30a3\u30fc\u30eb\u30c9\u306f\u3001\u300cPost\u300d\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u304c\u4fdd\u5b58\u3055\u308c\u308b\u305f\u3073\u306b\u81ea\u52d5\u7684\u306b\u66f4\u65b0\u3055\u308c\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django.db.models.signals import pre_save\nfrom django.dispatch import receiver\n\n@receiver(pre_save, sender=Post)\ndef update_summary(sender, instance, **kwargs):\n    instance.summary = instance.content[:100]\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"4\">\n<li>\u30d7\u30ed\u30ad\u30b7 \u30e2\u30c7\u30eb\u3092\u4f7f\u7528\u3059\u308b: \u30d7\u30ed\u30ad\u30b7 \u30e2\u30c7\u30eb\u306f\u3001\u540c\u3058\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9 \u30c6\u30fc\u30d6\u30eb\u3092\u5171\u6709\u3059\u308b\u65e2\u5b58\u306e\u30e2\u30c7\u30eb\u306b\u57fa\u3065\u3044\u3066\u65b0\u3057\u3044\u30e2\u30c7\u30eb\u3092\u4f5c\u6210\u3059\u308b\u65b9\u6cd5\u3067\u3059\u3002 \u30d7\u30ed\u30ad\u30b7 \u30e2\u30c7\u30eb\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u5143\u306e\u30e2\u30c7\u30eb\u306b\u5f71\u97ff\u3092\u4e0e\u3048\u308b\u3053\u3068\u306a\u304f\u3001\u65b0\u3057\u3044\u30e1\u30bd\u30c3\u30c9\u3001\u30d7\u30ed\u30d1\u30c6\u30a3\u3001\u304a\u3088\u3073\u30de\u30cd\u30fc\u30b8\u30e3\u30fc\u3092\u5b9a\u7fa9\u3067\u304d\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u516c\u958b\u3055\u308c\u305f\u8a18\u4e8b\u3092\u8868\u3059 &#8220;PublishPost&#8221; \u30d7\u30ed\u30ad\u30b7 \u30e2\u30c7\u30eb\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>class PublishedPost(Post):\n    class Meta:\n        proxy = True\n\n    def is_published(self):\n        return True\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"5\">\n<li>QuerySet \u306e\u30c1\u30a7\u30fc\u30f3 \u30a2\u30d7\u30ed\u30fc\u30c1\u3092\u6d3b\u7528\u3059\u308b: \u30af\u30a8\u30ea\u3092\u8a18\u8ff0\u3059\u308b\u3068\u304d\u306b\u3001\u3001\u306a\u3069\u306e QuerySet \u306e\u30c1\u30a7\u30fc\u30f3 \u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u3001\u8907\u96d1\u306a\u30af\u30a8\u30ea\u6761\u4ef6\u3092\u4f5c\u6210\u3067\u304d\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u5148\u9031\u516c\u958b\u3055\u308c\u305f\u8a18\u4e8b\u3092\u30af\u30a8\u30ea\u3057\u307e\u3059\u3002<code>filter()<\/code><code>exclude()<\/code><code>annotate()<\/code><\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from datetime import timedelta\nfrom django.utils import timezone\n\none_week_ago = timezone.now() - timedelta(weeks=1)\nrecent_posts = Post.objects.filter(pub_date__gte=one_week_ago)\n<\/code><\/pre>\n\n\n\n<p>\u4e0a\u8a18\u306e\u9ad8\u5ea6\u306a\u4f7f\u7528\u6cd5\u3068\u624b\u6cd5\u306f\u3001Django\u30e2\u30c7\u30eb\u3068\u30c7\u30fc\u30bf\u3092\u3088\u308a\u52b9\u679c\u7684\u306b\u64cd\u4f5c\u3059\u308b\u306e\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002 \u3053\u308c\u3089\u306e\u30e1\u30bd\u30c3\u30c9\u3092\u7fd2\u5f97\u3059\u308b\u3068\u3001\u5b9f\u969b\u306e\u958b\u767a\u306b\u304a\u3051\u308b\u3055\u307e\u3056\u307e\u306a\u30b7\u30ca\u30ea\u30aa\u306b\u5bfe\u5fdc\u3059\u308b\u969b\u306e\u67d4\u8edf\u6027\u304c\u9ad8\u307e\u308a\u3001\u30b3\u30fc\u30c9\u306e\u4fdd\u5b88\u6027\u3068\u8aad\u307f\u3084\u3059\u3055\u304c\u5411\u4e0a\u3057\u307e\u3059\u3002 Django\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u3092\u5b66\u3073\u3001\u5b9f\u8df5\u3057\u7d9a\u3051\u308b\u306e\u306b\u5f79\u7acb\u3061\u307e\u3059<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1610\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u3088\u308a\u826f\u3044Django\u958b\u767a\u8005\u306b\u306a\u308a\u307e\u3057\u3087\u3046\u3002 Django \u30e2\u30c7\u30eb\u306b\u95a2\u3059\u308b\u305d\u306e\u4ed6\u306e\u9ad8\u5ea6\u306a\u30c8\u30d4\u30c3\u30af\u3068\u30d2\u30f3\u30c8\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"6\">\n<li>\u591a\u5bfe\u591a\u30ea\u30ec\u30fc\u30b7\u30e7\u30f3\u30b7\u30c3\u30d7\u3092\u4f7f\u7528\u3059\u308b: Django \u306f\u591a\u5bfe\u591a\u30ea\u30ec\u30fc\u30b7\u30e7\u30f3\u30b7\u30c3\u30d7\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u308b\u305f\u3081\u3001\u8907\u6570\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u9593\u306e\u95a2\u9023\u4ed8\u3051\u3092\u7c21\u5358\u306b\u8868\u73fe\u3067\u304d\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001&#8221;Tag&#8221; \u30e2\u30c7\u30eb\u3092\u4f5c\u6210\u3057\u3001&#8221;Post&#8221; \u30e2\u30c7\u30eb\u3068\u306e\u591a\u5bfe\u591a\u30ea\u30ec\u30fc\u30b7\u30e7\u30f3\u30b7\u30c3\u30d7\u3092\u78ba\u7acb\u3057\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>class Tag(models.Model):\n    name = models.CharField(max_length=50)\n\n    def __str__(self):\n        return self.name\n\nclass Post(models.Model):\n    # ...\u5176\u4ed6\u5b57\u6bb5...\n    tags = models.ManyToManyField(Tag)\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"7\">\n<li>1 \u5bfe 1 \u306e\u95a2\u4fc2\u3092\u4f7f\u7528\u3059\u308b: 1 \u5bfe 1 \u306e\u95a2\u4fc2\u306f\u30012 \u3064\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u9593\u306e\u6392\u4ed6\u7684\u306a\u95a2\u4fc2\u3092\u8868\u3059\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001&#8221;User&#8221; \u30e2\u30c7\u30eb\u3068 1 \u5bfe 1 \u306e\u95a2\u4fc2\u3092\u78ba\u7acb\u3059\u308b &#8220;\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb&#8221; \u30e2\u30c7\u30eb\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django.contrib.auth.models import User\n\nclass Profile(models.Model):\n    user = models.OneToOneField(User, on_delete=models.CASCADE)\n    bio = models.TextField()\n\n    def __str__(self):\n        return self.user.username\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"8\">\n<li>\u30ab\u30b9\u30bf\u30e0\u30c6\u30fc\u30d6\u30eb\u540d\u3068\u30bd\u30fc\u30c8\u9806: \u30e2\u30c7\u30eb\u306e\u300c\u30e1\u30bf\u300d\u30af\u30e9\u30b9\u3067\u306f\u3001\u30c6\u30fc\u30d6\u30eb\u540d\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30bd\u30fc\u30c8\u9806\u306a\u3069\u306e\u30e1\u30bf\u30c7\u30fc\u30bf\u3092\u5b9a\u7fa9\u3067\u304d\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001&#8221;Post&#8221; \u30e2\u30c7\u30eb\u306e\u30ab\u30b9\u30bf\u30e0 \u30c6\u30fc\u30d6\u30eb\u540d\u3092\u8a2d\u5b9a\u3057\u3001\u65e2\u5b9a\u3067\u767a\u884c\u65e5\u306e\u964d\u9806\u3067\u4e26\u3079\u66ff\u3048\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>class Post(models.Model):\n    # ...\u5176\u4ed6\u5b57\u6bb5...\n\n    class Meta:\n        db_table = 'blog_posts'\n        ordering = ['-pub_date']\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"9\">\n<li>F() \u5f0f\u3068 Q() \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u4f7f\u7528\u3059\u308b: F() \u5f0f\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u30c7\u30fc\u30bf\u3092\u30e1\u30e2\u30ea\u306b\u30ed\u30fc\u30c9\u305b\u305a\u306b\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9 \u30ec\u30d9\u30eb\u3067\u30d5\u30a3\u30fc\u30eb\u30c9\u5024\u3092\u64cd\u4f5c\u3067\u304d\u307e\u3059\u3002 Q() \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306f\u3001\u8907\u96d1\u306a\u30af\u30a8\u30ea\u6761\u4ef6\u3092\u4f5c\u6210\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u3059\u3079\u3066\u306e\u8a18\u4e8b\u306e\u8aad\u307f\u53d6\u308a\u306b 1 \u3092\u8ffd\u52a0\u3057\u3001\u30d3\u30e5\u30fc\u6570\u304c 100 \u3092\u8d85\u3048\u308b\u8a18\u4e8b\u3084\u7279\u5b9a\u306e\u30ad\u30fc\u30ef\u30fc\u30c9\u3092\u542b\u3080\u8a18\u4e8b\u3092\u30af\u30a8\u30ea\u3057\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django.db.models import F, Q\n\nPost.objects.update(views=F('views') + 1)\npopular_posts = Post.objects.filter(Q(views__gt=100) | Q(title__icontains='keyword'))\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"10\">\n<li>\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9 \u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u4f7f\u7528\u3059\u308b: \u30af\u30a8\u30ea\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u5411\u4e0a\u3055\u305b\u308b\u305f\u3081\u306b\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9 \u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u30e2\u30c7\u30eb \u30d5\u30a3\u30fc\u30eb\u30c9\u306b\u8ffd\u52a0\u3067\u304d\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u300c\u6295\u7a3f\u300d\u30e2\u30c7\u30eb\u306e\u300c\u30bf\u30a4\u30c8\u30eb\u300d\u30d5\u30a3\u30fc\u30eb\u30c9\u306b\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>class Post(models.Model):\n    title = models.CharField(max_length=200, db_index=True)\n    # ...\u5176\u4ed6\u5b57\u6bb5...\n<\/code><\/pre>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u9ad8\u5ea6\u306a\u30c6\u30af\u30cb\u30c3\u30af\u3068\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u306b\u7fd2\u719f\u3057\u3066\u3044\u308b\u3053\u3068\u306f\u3001Django\u958b\u767a\u306e\u52b9\u7387\u3068\u54c1\u8cea\u3092\u5411\u4e0a\u3055\u305b\u308b\u306e\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002 \u5b9f\u969b\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u7d4c\u9a13\u3092\u7a4d\u3080\u306b\u3064\u308c\u3066\u3001\u3053\u308c\u3089\u306e\u6982\u5ff5\u3092\u3088\u308a\u3088\u304f\u7406\u89e3\u3057\u3001\u9069\u7528\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002 Django\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u306b\u3054\u671f\u5f85\u3044\u305f\u3060\u304d\u3001\u512a\u308c\u305fDjango\u958b\u767a\u8005\u306b\u306a\u308b\u305f\u3081\u306e\u65b0\u6a5f\u80fd\u3084\u30d2\u30f3\u30c8\u3092\u5b66\u3073\u307e\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1610\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u79fb\u884c\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u79fb\u884c\u306f\u3001\u30c7\u30fc\u30bf\u3092\u5931\u3046\u3053\u3068\u306a\u304f\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u69cb\u9020\u3092\u66f4\u65b0\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308bDjango\u306e\u91cd\u8981\u306a\u6982\u5ff5\u3067\u3059\u3002 \u958b\u767a\u4e2d\u306b\u30e2\u30c7\u30eb\u3092\u5909\u66f4\u3059\u308b\u3068\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u79fb\u884c\u306b\u3088\u3063\u3066\u3001\u305d\u308c\u3089\u306e\u5909\u66f4\u304c\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u6b63\u3057\u304f\u9069\u7528\u3055\u308c\u307e\u3059\u3002 \u6b21\u306b\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u79fb\u884c\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u79fb\u884c\u304c\u5fc5\u8981\u306a\u7406\u7531<\/li>\n<\/ol>\n\n\n\n<p>\u958b\u767a\u4e2d\u306b\u3001\u30d5\u30a3\u30fc\u30eb\u30c9\u306e\u8ffd\u52a0\u3001\u524a\u9664\u3001\u5909\u66f4\u306a\u3069\u3001\u30e2\u30c7\u30eb\u306e\u5b9a\u7fa9\u3092\u5909\u66f4\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002 \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u5185\u306e\u30c6\u30fc\u30d6\u30eb\u69cb\u9020\u3092\u76f4\u63a5\u624b\u52d5\u3067\u5909\u66f4\u3059\u308b\u3068\u3001\u30c7\u30fc\u30bf\u304c\u5931\u308f\u308c\u305f\u308a\u3001\u30c7\u30fc\u30bf\u306e\u6574\u5408\u6027\u304c\u640d\u306a\u308f\u308c\u305f\u308a\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 \u3057\u305f\u304c\u3063\u3066\u3001Django\u306f\u3001\u30e2\u30c7\u30eb\u306e\u5909\u66f4\u304c\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u30b9\u30e0\u30fc\u30ba\u306b\u9069\u7528\u3055\u308c\u308b\u3088\u3046\u306b\u3059\u308b\u305f\u3081\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u79fb\u884c\u30b7\u30b9\u30c6\u30e0\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\">\n<li>\u30d5\u30a1\u30a4\u30eb\u3092\u79fb\u884c\u3059\u308b<\/li>\n<\/ol>\n\n\n\n<p>\u79fb\u884c\u30d5\u30a1\u30a4\u30eb\u306f\u3001Django \u304c\u30e2\u30c7\u30eb\u306e\u5909\u66f4\u3092\u6587\u66f8\u5316\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3059\u308b\u30d5\u30a1\u30a4\u30eb\u3067\u3059\u3002 \u5404\u79fb\u884c\u30d5\u30a1\u30a4\u30eb\u306b\u306f\u3001\u30d5\u30a3\u30fc\u30eb\u30c9\u306e\u8ffd\u52a0\u3001\u30d5\u30a3\u30fc\u30eb\u30c9\u306e\u524a\u9664\u3001\u30d5\u30a3\u30fc\u30eb\u30c9 \u30d7\u30ed\u30d1\u30c6\u30a3\u306e\u5909\u66f4\u306a\u3069\u30010001 \u3064\u4ee5\u4e0a\u306e\u30e2\u30c7\u30eb\u5909\u66f4\u306e\u8a73\u7d30\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002 \u79fb\u884c\u30d5\u30a1\u30a4\u30eb\u306f\u901a\u5e38\u3001\u30a2\u30d7\u30ea\u306e\u300c\u79fb\u884c\u300d\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u3042\u308a\u3001\u6642\u7cfb\u5217\u3067\u540d\u524d\u304c\u4ed8\u3051\u3089\u308c\u307e\u3059(\u300c0002_initial.py\u300d\u3001\u300c&lt;&gt;_add_field.py\u300d\u306a\u3069)\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"3\">\n<li>\u79fb\u884c\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3059\u308b<\/li>\n<\/ol>\n\n\n\n<p>\u30e2\u30c7\u30eb\u306b\u5909\u66f4\u3092\u52a0\u3048\u308b\u5834\u5408\u306f\u3001\u305d\u308c\u3089\u306e\u5909\u66f4\u3092\u6587\u66f8\u5316\u3059\u308b\u305f\u3081\u306b\u65b0\u3057\u3044\u79fb\u884c\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u3001\u79fb\u884c\u30d5\u30a1\u30a4\u30eb\u3092\u81ea\u52d5\u7684\u306b\u751f\u6210\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">bashCopy code<code>python manage.py makemigrations\n<\/code><\/pre>\n\n\n\n<p>Django\u306f\u767b\u9332\u3055\u308c\u3066\u3044\u308b\u3059\u3079\u3066\u306e\u30a2\u30d7\u30ea\u3092\u30c1\u30a7\u30c3\u30af\u3057\u3001\u5404\u30a2\u30d7\u30ea\u306e\u30e2\u30c7\u30eb\u5909\u66f4\u306b\u3064\u3044\u3066\u300cmigrations\u300d\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u65b0\u3057\u3044\u79fb\u884c\u30d5\u30a1\u30a4\u30eb\u3092\u751f\u6210\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"4\">\n<li>\u30a2\u30d7\u30ea\u306e\u79fb\u884c<\/li>\n<\/ol>\n\n\n\n<p>\u79fb\u884c\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3057\u305f\u3089\u3001\u305d\u308c\u3092\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u9069\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u3001\u79fb\u884c\u64cd\u4f5c\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">bashCopy code<code>python manage.py migrate\n<\/code><\/pre>\n\n\n\n<p>Django \u306f\u3001\u9069\u7528\u3055\u308c\u305f\u79fb\u884c\u30d5\u30a1\u30a4\u30eb\u3068\u9069\u7528\u3055\u308c\u3066\u3044\u306a\u3044\u79fb\u884c\u30d5\u30a1\u30a4\u30eb\u3092\u30c1\u30a7\u30c3\u30af\u3057\u3001\u9069\u7528\u3055\u308c\u3066\u3044\u306a\u3044\u79fb\u884c\u3092\u9806\u756a\u306b\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u9069\u7528\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"5\">\n<li>\u79fb\u884c\u3092\u30ed\u30fc\u30eb\u30d0\u30c3\u30af\u3059\u308b<\/li>\n<\/ol>\n\n\n\n<p>\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u5185\u306e\u79fb\u884c\u3092\u5143\u306b\u623b\u3059\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u306f\u3001\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u3001\u6307\u5b9a\u3057\u305f\u79fb\u884c\u306b\u30ed\u30fc\u30eb\u30d0\u30c3\u30af\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">bashCopy code<code>python manage.py migrate &lt;app_name&gt; &lt;migration_name&gt;\n<\/code><\/pre>\n\n\n\n<p>\u305f\u3068\u3048\u3070\u3001\u300c0002_add_field.py\u300d\u79fb\u884c\u306b\u30ed\u30fc\u30eb\u30d0\u30c3\u30af\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">bashCopy code<code>python manage.py migrate myapp 0002_add_field\n<\/code><\/pre>\n\n\n\n<p>\u6ce8: \u79fb\u884c\u3092\u30ed\u30fc\u30eb\u30d0\u30c3\u30af\u3059\u308b\u3068\u3001\u30c7\u30fc\u30bf\u304c\u5931\u308f\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 \u30ed\u30fc\u30eb\u30d0\u30c3\u30af\u3059\u308b\u524d\u306b\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u3057\u305f\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"6\">\n<li>\u79fb\u884c\u306e\u72b6\u614b\u3092\u8868\u793a\u3059\u308b<\/li>\n<\/ol>\n\n\n\n<p>\u767b\u9332\u6e08\u307f\u30a2\u30d7\u30ea\u306e\u79fb\u884c\u72b6\u614b\u3092\u8868\u793a\u3059\u308b\u306b\u306f\u3001\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">bashCopy code<code>python manage.py showmigrations\n<\/code><\/pre>\n\n\n\n<p>Django \u306f\u3001\u3059\u3079\u3066\u306e\u30a2\u30d7\u30ea\u306e\u79fb\u884c\u30d5\u30a1\u30a4\u30eb\u3092\u4e00\u89a7\u8868\u793a\u3057\u3001\u9069\u7528\u6e08\u307f\u304a\u3088\u3073\u672a\u9069\u7528\u306e\u79fb\u884c\u306b\u30de\u30fc\u30af\u3092\u4ed8\u3051\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u8981\u7d04\u3059\u308b\u3068\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u79fb\u884c\u306f\u3001\u30e2\u30c7\u30eb\u306e\u5909\u66f4\u304c\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u5b89\u5168\u304b\u3064\u78ba\u5b9f\u306b\u9069\u7528\u3055\u308c\u308b\u3053\u3068\u3092\u4fdd\u8a3c\u3059\u308bDjango\u306e\u91cd\u8981\u306a\u6a5f\u80fd\u3067\u3059\u3002 \u958b\u767a\u4e2d\u306f\u3001\u79fb\u884c\u30d5\u30a1\u30a4\u30eb\u306e\u4f5c\u6210\u3001\u9069\u7528\u3001\u30ed\u30fc\u30eb\u30d0\u30c3\u30af\u306b\u7fd2\u719f\u3057\u3001\u30e2\u30c7\u30eb\u3078\u306e\u5909\u66f4\u304c\u30bf\u30a4\u30e0\u30ea\u30fc\u306b\u884c\u308f\u308c\u308b\u3088\u3046\u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1610\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>2 \/ 2<\/p>\n\n\n\n<p>\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u79fb\u884c\u30d5\u30a1\u30a4\u30eb\u3092\u66f4\u65b0\u3057\u307e\u3059\u3002 Django \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u79fb\u884c\u3059\u308b\u305f\u3081\u306e\u8ffd\u52a0\u60c5\u5831\u3068\u30d2\u30f3\u30c8\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"7\">\n<li>\u79fb\u884c\u30d5\u30a1\u30a4\u30eb\u3092\u30de\u30fc\u30b8\u3059\u308b<\/li>\n<\/ol>\n\n\n\n<p>\u958b\u767a\u30d7\u30ed\u30bb\u30b9\u304c\u9032\u3080\u306b\u3064\u308c\u3066\u3001\u5927\u91cf\u306e\u79fb\u884c\u30d5\u30a1\u30a4\u30eb\u304c\u751f\u6210\u3055\u308c\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002 \u79fb\u884c\u5c65\u6b74\u3092\u7c21\u7d20\u5316\u3057\u3001\u4fdd\u5b88\u6027\u3092\u5411\u4e0a\u3055\u305b\u308b\u305f\u3081\u306b\u3001\u8907\u6570\u306e\u79fb\u884c\u30d5\u30a1\u30a4\u30eb\u3092\u30de\u30fc\u30b8\u3067\u304d\u307e\u3059\u3002 \u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u3001\u8907\u6570\u306e\u79fb\u884c\u30d5\u30a1\u30a4\u30eb\u3092\u65b0\u3057\u3044\u79fb\u884c\u30d5\u30a1\u30a4\u30eb\u306b\u30de\u30fc\u30b8\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">bashCopy code<code>python manage.py squashmigrations &lt;app_name&gt; &lt;migration_name&gt;\n<\/code><\/pre>\n\n\n\n<p>\u305f\u3068\u3048\u3070\u3001&#8221;myapp&#8221; \u30a2\u30d7\u30ea\u306e\u3059\u3079\u3066\u306e\u79fb\u884c\u30d5\u30a1\u30a4\u30eb\u3092\u65b0\u3057\u3044\u79fb\u884c\u30d5\u30a1\u30a4\u30eb\u306b\u30de\u30fc\u30b8\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">bashCopy code<code>python manage.py squashmigrations myapp 0005_latest_migration\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"8\">\n<li>\u30ab\u30b9\u30bf\u30e0\u79fb\u884c<\/li>\n<\/ol>\n\n\n\n<p>\u307b\u3068\u3093\u3069\u306e\u79fb\u884c\u30d5\u30a1\u30a4\u30eb\u306f\u30b3\u30de\u30f3\u30c9\u3067\u81ea\u52d5\u7684\u306b\u751f\u6210\u3055\u308c\u307e\u3059\u304c\u3001\u7279\u5b9a\u306e\u30a2\u30af\u30b7\u30e7\u30f3\u3092\u5b9f\u884c\u3059\u308b\u305f\u3081\u306b\u30ab\u30b9\u30bf\u30e0\u79fb\u884c\u3092\u4f5c\u6210\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002 \u7a7a\u306e\u79fb\u884c\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3059\u308b\u306b\u306f\u3001\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002<code>makemigrations<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">bashCopy code<code>python manage.py makemigrations &lt;app_name&gt; --empty\n<\/code><\/pre>\n\n\n\n<p>\u6b21\u306b\u3001\u7d50\u679c\u306e\u79fb\u884c\u30d5\u30a1\u30a4\u30eb\u3067\u3001Python \u30b3\u30fc\u30c9\u3092\u8a18\u8ff0\u3057\u3066\u30ab\u30b9\u30bf\u30e0 \u30a2\u30af\u30b7\u30e7\u30f3\u3092\u5b9a\u7fa9\u3067\u304d\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u79fb\u884c\u30d5\u30a1\u30a4\u30eb\u306e\u65e2\u5b58\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u306e\u65e2\u5b9a\u5024\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django.db import migrations, models\n\ndef set_default_value(apps, schema_editor):\n    MyModel = apps.get_model('myapp', 'MyModel')\n    MyModel.objects.update(some_field='default value')\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n        ('myapp', '0004_previous_migration'),\n    ]\n\n    operations = [\n        migrations.RunPython(set_default_value),\n    ]\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"9\">\n<li>\u30c7\u30fc\u30bf\u79fb\u884c<\/li>\n<\/ol>\n\n\n\n<p>\u79fb\u884c\u30d7\u30ed\u30bb\u30b9\u306e\u4e00\u74b0\u3068\u3057\u3066\u30c7\u30fc\u30bf\u3092\u64cd\u4f5c\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u306f\u3001\u30c7\u30fc\u30bf\u79fb\u884c\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002 \u30c7\u30fc\u30bf\u79fb\u884c\u306f\u3001\u30e2\u30c7\u30eb\u306e\u5909\u66f4\u3092\u9069\u7528\u3057\u306a\u304c\u3089\u30c7\u30fc\u30bf\u3092\u5909\u63db\u307e\u305f\u306f\u64cd\u4f5c\u3067\u304d\u308b\u7279\u6b8a\u306a\u30bf\u30a4\u30d7\u306e\u79fb\u884c\u30d5\u30a1\u30a4\u30eb\u3067\u3059\u3002 \u305f\u3068\u3048\u3070\u3001&#8221;Post&#8221; \u30e2\u30c7\u30eb\u306e\u30bf\u30a4\u30c8\u30eb \u30d5\u30a3\u30fc\u30eb\u30c9\u306b\u7a7a\u3067\u306a\u3044\u65b0\u3057\u3044\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u8ffd\u52a0\u3059\u308b\u5834\u5408\u306f\u3001\u65e2\u5b58\u306e\u30ec\u30b3\u30fc\u30c9\u306e\u65e2\u5b9a\u5024\u3092\u6307\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u79fb\u884c\u30d5\u30a1\u30a4\u30eb\u306e\u30a2\u30af\u30b7\u30e7\u30f3\u3092\u4f7f\u7528\u3057\u3066\u3001\u3053\u308c\u3092\u5b9f\u73fe\u3067\u304d\u307e\u3059\u3002<code>RunPython<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django.db import migrations, models\n\ndef set_default_title(apps, schema_editor):\n    Post = apps.get_model('blog', 'Post')\n    Post.objects.filter(title__isnull=True).update(title='Untitled')\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n        ('blog', '0003_auto_20210424_1300'),\n    ]\n\n    operations = [\n        migrations.AddField(\n            model_name='post',\n            name='title',\n            field=models.CharField(default='', max_length=200),\n            preserve_default=False,\n        ),\n        migrations.RunPython(set_default_title),\n    ]\n<\/code><\/pre>\n\n\n\n<p>Django \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u79fb\u884c\u306e\u3055\u307e\u3056\u307e\u306a\u64cd\u4f5c\u3068\u624b\u6cd5\u3092\u7406\u89e3\u3057\u3066\u7fd2\u5f97\u3059\u308b\u3068\u3001\u958b\u767a\u4e2d\u306b\u30e2\u30c7\u30eb\u3068\u30c7\u30fc\u30bf\u306e\u5909\u66f4\u3092\u3088\u308a\u52b9\u679c\u7684\u306b\u51e6\u7406\u3059\u308b\u306e\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002 \u5b9f\u969b\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306f\u3001\u3055\u307e\u3056\u307e\u306a\u8907\u96d1\u306a\u79fb\u884c\u30b7\u30ca\u30ea\u30aa\u306b\u906d\u9047\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 \u7d99\u7d9a\u7684\u306a\u5b66\u7fd2\u3068\u5b9f\u8df5\u3092\u901a\u3058\u3066\u3001\u3053\u306e\u77e5\u8b58\u3092\u3088\u308a\u3088\u304f\u7406\u89e3\u3057\u3066\u9069\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u3001\u958b\u767a\u52b9\u7387\u3068\u54c1\u8cea\u304c\u5411\u4e0a\u3057\u307e\u3059<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1610\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001Django \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u79fb\u884c\u306b\u95a2\u9023\u3059\u308b\u3044\u304f\u3064\u304b\u306e\u9ad8\u30ec\u30d9\u30eb\u306e\u30c8\u30d4\u30c3\u30af\u3068\u30d9\u30b9\u30c8 \u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u306b\u79fb\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"10\">\n<li>\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u3092\u4f7f\u7528\u3059\u308b<\/li>\n<\/ol>\n\n\n\n<p>\u79fb\u884c\u30d7\u30ed\u30bb\u30b9\u306e\u30a2\u30c8\u30df\u30c3\u30af\u6027\u3092\u78ba\u4fdd\u3059\u308b\u305f\u3081\u306b\u3001\u79fb\u884c\u64cd\u4f5c\u3067\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002 \u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u3001Django\u306f\u5404\u79fb\u884c\u64cd\u4f5c\u3092\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u3067\u30e9\u30c3\u30d7\u3057\u3066\u3001\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u305f\u5834\u5408\u306b\u5909\u66f4\u3092\u30ed\u30fc\u30eb\u30d0\u30c3\u30af\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002 \u30ab\u30b9\u30bf\u30e0\u79fb\u884c\u3067\u306f\u3001\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u3082\u63a8\u5968\u3055\u308c\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u30a2\u30af\u30b7\u30e7\u30f3\u3067\u30c7\u30b3\u30ec\u30fc\u30bf\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002<code>RunPython<\/code><code>atomic<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django.db import migrations, models\nfrom django.db.transaction import atomic\n\n@atomic\ndef complex_migration_operation(apps, schema_editor):\n    # \u6267\u884c\u590d\u6742\u7684\u8fc1\u79fb\u64cd\u4f5c\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n        ('myapp', '0005_previous_migration'),\n    ]\n\n    operations = [\n        migrations.RunPython(complex_migration_operation),\n    ]\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"11\">\n<li>\u30c0\u30a6\u30f3\u30bf\u30a4\u30e0\u306a\u3057\u306e\u79fb\u884c<\/li>\n<\/ol>\n\n\n\n<p>\u904b\u7528\u74b0\u5883\u3067\u306f\u3001\u30e6\u30fc\u30b6\u30fc \u30a8\u30af\u30b9\u30da\u30ea\u30a8\u30f3\u30b9\u3078\u306e\u5f71\u97ff\u3092\u56de\u907f\u3059\u308b\u305f\u3081\u306b\u3001\u30c0\u30a6\u30f3\u30bf\u30a4\u30e0\u306a\u3057\u306e\u79fb\u884c\u3092\u5b9f\u884c\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002 \u30c0\u30a6\u30f3\u30bf\u30a4\u30e0\u306a\u3057\u306e\u79fb\u884c\u306f\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u5909\u66f4\u304c\u9069\u7528\u3055\u308c\u3066\u3044\u308b\u9593\u306f\u30b5\u30fc\u30d3\u30b9\u3092\u505c\u6b62\u3059\u308b\u5fc5\u8981\u304c\u306a\u3044\u79fb\u884c\u30d7\u30ed\u30bb\u30b9\u3067\u3059\u3002 \u30c0\u30a6\u30f3\u30bf\u30a4\u30e0\u306a\u3057\u306e\u79fb\u884c\u3092\u5b9f\u73fe\u3059\u308b\u306b\u306f\u3001\u6b21\u306e\u70b9\u306b\u6ce8\u610f\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30d5\u30a3\u30fc\u30eb\u30c9\u306e\u7a2e\u985e\u3092\u5909\u66f4\u3057\u305f\u308a\u3001\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u524a\u9664\u3057\u305f\u308a\u3059\u308b\u524d\u306b\u3001\u30b3\u30fc\u30c9\u304c\u53e4\u3044\u30c7\u30fc\u30bf\u69cb\u9020\u3068\u65b0\u3057\u3044\u30c7\u30fc\u30bf\u69cb\u9020\u3092\u51e6\u7406\u3067\u304d\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/li>\n\n\n\n<li>\u65b0\u3057\u3044\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u8ffd\u52a0\u3059\u308b\u3068\u304d\u306f\u3001\u65e2\u5b9a\u5024\u3092\u4f7f\u7528\u3059\u308b\u304b\u3001null \u5024\u3092\u8a31\u53ef\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30c7\u30fc\u30bf\u3092\u64cd\u4f5c\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u306f\u3001\u5404\u79fb\u884c\u306e\u5f71\u97ff\u3092\u8efd\u6e1b\u3059\u308b\u305f\u3081\u306b\u3001\u30c7\u30fc\u30bf\u3092\u5c0f\u3055\u306a\u79fb\u884c\u306b\u5206\u5272\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002<\/li>\n\n\n\n<li>\u79fb\u884c\u30d7\u30ed\u30bb\u30b9\u3092\u30c6\u30b9\u30c8\u3057\u3066\u3001\u305d\u306e\u6b63\u78ba\u6027\u3068\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\" start=\"12\">\n<li>\u79fb\u884c\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306e\u6700\u9069\u5316<\/li>\n<\/ol>\n\n\n\n<p>\u5927\u91cf\u306e\u30c7\u30fc\u30bf\u3092\u51e6\u7406\u3059\u308b\u5834\u5408\u3001\u79fb\u884c\u64cd\u4f5c\u304c\u9045\u304f\u306a\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 \u79fb\u884c\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u5411\u4e0a\u3055\u305b\u308b\u306b\u306f\u3001\u6b21\u306e\u6700\u9069\u5316\u65b9\u6cd5\u3092\u691c\u8a0e\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u304a\u3088\u3073\u306a\u3069\u306e\u4e00\u62ec\u64cd\u4f5c\u3092\u4f7f\u7528\u3057\u3066\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u64cd\u4f5c\u306e\u6570\u3092\u6e1b\u3089\u3057\u307e\u3059\u3002<code>bulk_create<\/code><code>bulk_update<\/code><\/li>\n\n\n\n<li>\u30eb\u30fc\u30d7\u3067\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u64cd\u4f5c\u306e\u5b9f\u884c\u306f\u907f\u3051\u3001\u53ef\u80fd\u306a\u9650\u308a\u96c6\u8a08\u95a2\u6570\u3068\u6ce8\u91c8\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u79fb\u884c\u3067\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9 \u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u4f7f\u7528\u3057\u3066\u3001\u30af\u30a8\u30ea\u3092\u9ad8\u901f\u5316\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u7279\u306b\u5927\u304d\u306a\u30c6\u30fc\u30d6\u30eb\u306e\u5834\u5408\u306f\u3001\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u5411\u4e0a\u3055\u305b\u308b\u305f\u3081\u306b\u30d1\u30fc\u30c6\u30a3\u30b7\u30e7\u30f3\u5206\u5272\u307e\u305f\u306f\u30b7\u30e3\u30fc\u30c7\u30a3\u30f3\u30b0\u306e\u4f7f\u7528\u3092\u691c\u8a0e\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\" start=\"13\">\n<li>\u8907\u6570\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u79fb\u884c<\/li>\n<\/ol>\n\n\n\n<p>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u8907\u6570\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u306f\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3054\u3068\u306b\u79fb\u884c\u3092\u5b9f\u884c\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u3053\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u4f7f\u7528\u3057\u3066\u3001\u79fb\u884c\u3059\u308b\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u6307\u5b9a\u3067\u304d\u307e\u3059\u3002<code>--database<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">bashCopy code<code>python manage.py migrate --database=database_name\n<\/code><\/pre>\n\n\n\n<p>\u3067\u306f\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3054\u3068\u306b\u30de\u30a4\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3\u30fb\u30aa\u30da\u30ec\u30fc\u30b7\u30e7\u30f3\u3092\u69cb\u6210\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<code>settings.py<\/code><\/p>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u9ad8\u5ea6\u306a\u30c8\u30d4\u30c3\u30af\u3068\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u3092\u7406\u89e3\u3057\u3066\u9069\u7528\u3059\u308b\u3053\u3068\u306f\u3001Django\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u79fb\u884c\u3067\u3088\u308a\u9ad8\u3044\u6210\u529f\u3092\u53ce\u3081\u308b\u306e\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002 \u5b9f\u969b\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306f\u3001\u3088\u308a\u8907\u96d1\u3067\u56f0\u96e3\u306a\u79fb\u884c\u306e\u30cb\u30fc\u30ba\u306b\u906d\u9047\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 Django\u958b\u767a\u306e\u7d4c\u9a13\u3092\u7a4d\u3080\u306b\u3064\u308c\u3066\u3001\u3053\u306e\u77e5\u8b58\u3092\u3088\u308a\u3088\u304f\u7406\u89e3\u3057\u3001\u9069\u7528\u3057\u3066\u6539\u5584\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1610\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u9ad8\u3044\u958b\u767a\u52b9\u7387\u3068\u54c1\u8cea\u3002 \u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001Django\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u79fb\u884c\u306b\u95a2\u9023\u3059\u308b\u3044\u304f\u3064\u304b\u306e\u30d2\u30f3\u30c8\u3068\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u3092\u5f15\u304d\u7d9a\u304d\u691c\u8a0e\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"14\">\n<li>Django \u306e\u30b7\u30b0\u30ca\u30eb\u3092\u4f7f\u7528\u3059\u308b<\/li>\n<\/ol>\n\n\n\n<p>Django \u306e\u30b7\u30b0\u30ca\u30ea\u30f3\u30b0\u30b7\u30b9\u30c6\u30e0\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u7279\u5b9a\u306e\u30a2\u30af\u30b7\u30e7\u30f3\u304c\u767a\u751f\u3057\u305f\u3068\u304d\u306b\u30b3\u30fc\u30c9\u3092\u5b9f\u884c\u3067\u304d\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u30e2\u30c7\u30eb\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u4fdd\u5b58\u3057\u305f\u308a\u3001\u30e2\u30c7\u30eb\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u524a\u9664\u3057\u305f\u308a\u3059\u308b\u3068\u304d\u306b\u3001\u30b7\u30b0\u30ca\u30eb\u3092\u4f7f\u7528\u3057\u3066\u30ab\u30b9\u30bf\u30e0\u30a2\u30af\u30b7\u30e7\u30f3\u3092\u5b9f\u884c\u3067\u304d\u307e\u3059\u3002 \u30b7\u30b0\u30ca\u30eb\u306f\u3001\u30ed\u30b0\u306e\u30ed\u30b0\u8a18\u9332\u3001\u30c7\u30fc\u30bf\u306e\u691c\u8a3c\u3001\u307e\u305f\u306f\u4ed6\u306e\u30a2\u30af\u30b7\u30e7\u30f3\u306e\u30c8\u30ea\u30ac\u30fc\u306b\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u4fe1\u53f7\u3092\u4f7f\u7528\u3059\u308b\u306b\u306f\u3001\u4fe1\u53f7\u51e6\u7406\u95a2\u6570\u3092\u5b9a\u7fa9\u3057\u3001\u305d\u308c\u3092\u7279\u5b9a\u306e\u4fe1\u53f7\u306b\u63a5\u7d9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u65b0\u3057\u3044\u30e6\u30fc\u30b6\u30fc\u304c\u4f5c\u6210\u3055\u308c\u305f\u3068\u304d\u306b\u30a6\u30a7\u30eb\u30ab\u30e0 \u30e1\u30fc\u30eb\u3092\u9001\u4fe1\u3059\u308b\u65b9\u6cd5\u306e\u7c21\u5358\u306a\u4f8b\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django.db.models.signals import post_save\nfrom django.dispatch import receiver\nfrom django.core.mail import send_mail\nfrom django.contrib.auth.models import User\n\n@receiver(post_save, sender=User)\ndef send_welcome_email(sender, instance, created, **kwargs):\n    if created:\n        send_mail(\n            'Welcome to My Site',\n            'Thank you for registering at our website.',\n            'noreply@example.com',\n            [instance.email],\n            fail_silently=False,\n        )\n<\/code><\/pre>\n\n\n\n<p>\u3053\u306e\u4f8b\u3067\u306f\u3001\u30b7\u30b0\u30ca\u30eb\u3092\u4f7f\u7528\u3057\u3066\u65b0\u3057\u3044\u30e6\u30fc\u30b6\u30fc\u306e\u4f5c\u6210\u3092\u30ea\u30c3\u30b9\u30f3\u3057\u307e\u3059\u3002 \u65b0\u3057\u3044\u30e6\u30fc\u30b6\u30fc\u304c\u4f5c\u6210\u3055\u308c\u308b\u3068\u3001\u95a2\u6570\u304c\u30c8\u30ea\u30ac\u30fc\u3055\u308c\u307e\u3059\u3002<code>post_save<\/code><code>send_welcome_email<\/code><\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"15\">\n<li>\u30ad\u30e3\u30c3\u30b7\u30e5<\/li>\n<\/ol>\n\n\n\n<p>\u30ad\u30e3\u30c3\u30b7\u30e5\u306f\u3001Web \u30a2\u30d7\u30ea\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u5411\u4e0a\u3055\u305b\u308b\u305f\u3081\u306e\u91cd\u8981\u306a\u624b\u6cd5\u306e 1 \u3064\u3067\u3059\u3002 \u8a08\u7b97\u7d50\u679c\u307e\u305f\u306f\u30af\u30a8\u30ea\u7d50\u679c\u3092\u30ad\u30e3\u30c3\u30b7\u30e5\u306b\u683c\u7d0d\u3059\u308b\u3053\u3068\u3067\u3001\u540c\u3058\u64cd\u4f5c\u3092\u7e70\u308a\u8fd4\u3055\u306a\u3044\u3088\u3046\u306b\u3059\u308b\u3053\u3068\u3067\u5fdc\u7b54\u6027\u3092\u5411\u4e0a\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p>Django \u306f\u3001\u30d3\u30e5\u30fc\u3001\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30d5\u30e9\u30b0\u30e1\u30f3\u30c8\u3001\u307e\u305f\u306f\u30c7\u30fc\u30bf\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u7c21\u5358\u306b\u30ad\u30e3\u30c3\u30b7\u30e5\u3067\u304d\u308b\u67d4\u8edf\u306a\u30ad\u30e3\u30c3\u30b7\u30e5\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002 \u30e1\u30e2\u30ea\u3001\u30d5\u30a1\u30a4\u30eb\u3001\u307e\u305f\u306f Memcached \u3084 Redis \u306a\u3069\u306e\u30b5\u30fc\u30c9\u30d1\u30fc\u30c6\u30a3\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u30b5\u30fc\u30d3\u30b9\u306a\u3069\u3001\u3055\u307e\u3056\u307e\u306a\u30ad\u30e3\u30c3\u30b7\u30e5\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u8a2d\u5b9a\u3059\u308b\u306b\u306f\u3001 \u3067\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u30e1\u30e2\u30ea\u5185\u30ad\u30e3\u30c3\u30b7\u30e5\u306e\u4f7f\u7528\u65b9\u6cd5\u306e\u7c21\u5358\u306a\u4f8b\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<code>settings.py<\/code><code>CACHES<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>CACHES = {\n    'default': {\n        'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',\n        'LOCATION': 'unique-snowflake',\n    }\n}\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"16\">\n<li>\u30da\u30fc\u30b8\u30cd\u30fc\u30b7\u30e7\u30f3<\/li>\n<\/ol>\n\n\n\n<p>\u6539\u30da\u30fc\u30b8\u4f4d\u7f6e\u306e\u81ea\u52d5\u4fee\u6b63\u306f\u3001\u5927\u91cf\u306e\u30c7\u30fc\u30bf\u3092\u6271\u3046\u5834\u5408\u306b\u52b9\u679c\u7684\u306a\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6700\u9069\u5316\u624b\u6cd5\u3067\u3059\u3002 \u30c7\u30fc\u30bf\u3092\u8907\u6570\u306e\u30da\u30fc\u30b8\u306b\u5206\u5272\u3059\u308b\u3053\u3068\u3067\u3001\u30ea\u30af\u30a8\u30b9\u30c8\u3042\u305f\u308a\u306e\u30c7\u30fc\u30bf\u91cf\u3092\u6e1b\u3089\u3057\u3001\u5fdc\u7b54\u6027\u3092\u5411\u4e0a\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p>Django \u306b\u306f\u3001\u4e00\u9023\u306e\u30af\u30a8\u30ea\u3092\u7c21\u5358\u306b\u30da\u30fc\u30b8\u5206\u5272\u3067\u304d\u308b\u5358\u7d14\u306a\u30da\u30fc\u30b8\u30cd\u30fc\u30b7\u30e7\u30f3\u30af\u30e9\u30b9\u304c\u7528\u610f\u3055\u308c\u3066\u3044\u307e\u3059\u3002 \u30d3\u30e5\u30fc\u3067\u6539\u30da\u30fc\u30b8\u4f4d\u7f6e\u306e\u81ea\u52d5\u4fee\u6b63\u3092\u4f7f\u7528\u3059\u308b\u65b9\u6cd5\u306e\u7c21\u5358\u306a\u4f8b\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django.core.paginator import Paginator\nfrom django.shortcuts import render\nfrom myapp.models import Article\n\ndef article_list(request):\n    articles = Article.objects.all().order_by('-pub_date')\n    paginator = Paginator(articles, 25)  # \u6bcf\u9875\u663e\u793a 25 \u7bc7\u6587\u7ae0\n\n    page = request.GET.get('page')\n    articles = paginator.get_page(page)\n\n    return render(request, 'myapp\/article_list.html', {'articles': articles})\n<\/code><\/pre>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u30c6\u30af\u30cb\u30c3\u30af\u3092\u7fd2\u5f97\u3059\u308b\u3053\u3068\u306b\u3088\u3063\u3066<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1610\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u30b9\u30de\u30fc\u30c8\u3067\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001Django\u306e\u6a5f\u80fd\u3092\u6700\u5927\u9650\u306b\u6d3b\u7528\u3057\u3066\u3001Web\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3068\u30b9\u30b1\u30fc\u30e9\u30d3\u30ea\u30c6\u30a3\u3092\u5411\u4e0a\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u305d\u306e\u4ed6\u306e Django \u306e\u30c8\u30d4\u30c3\u30af\u3068\u63d0\u6848\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"17\">\n<li>\u30df\u30c9\u30eb\u30a6\u30a7\u30a2\u3092\u4f7f\u7528\u3059\u308b<\/li>\n<\/ol>\n\n\n\n<p>Django\u30df\u30c9\u30eb\u30a6\u30a7\u30a2\u306f\u3001\u30ea\u30af\u30a8\u30b9\u30c8\u51e6\u7406\u4e2d\u306b\u30b0\u30ed\u30fc\u30d0\u30eb\u64cd\u4f5c\u3092\u5b9f\u884c\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b\u8efd\u91cf\u30d7\u30e9\u30b0\u30a4\u30f3\u30b7\u30b9\u30c6\u30e0\u3067\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u30df\u30c9\u30eb\u30a6\u30a7\u30a2\u3092\u4f7f\u7528\u3057\u3066\u3001\u8981\u6c42\u306e\u30ed\u30b0\u8a18\u9332\u3001\u30a2\u30af\u30bb\u30b9\u5236\u5fa1\u306e\u5b9f\u88c5\u3001\u30ab\u30b9\u30bf\u30e0 HTTP \u30d8\u30c3\u30c0\u30fc\u306e\u8ffd\u52a0\u3092\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u30df\u30c9\u30eb\u30a6\u30a7\u30a2\u3092\u4f5c\u6210\u3059\u308b\u306b\u306f\u3001\u30e1\u30bd\u30c3\u30c9\u3092\u542b\u3080\u30af\u30e9\u30b9\u3092\u5b9a\u7fa9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u30df\u30c9\u30eb\u30a6\u30a7\u30a2\u3092\u4f7f\u7528\u3057\u3066\u8981\u6c42\u3092\u30ed\u30b0\u306b\u8a18\u9332\u3059\u308b\u65b9\u6cd5\u306e\u7c21\u5358\u306a\u4f8b\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<code>__call__<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>import logging\n\nclass LoggingMiddleware:\n    def __init__(self, get_response):\n        self.get_response = get_response\n\n    def __call__(self, request):\n        logging.info(f\"Request to {request.path}\")\n        response = self.get_response(request)\n        return response\n<\/code><\/pre>\n\n\n\n<p>\u30df\u30c9\u30eb\u30a6\u30a7\u30a2\u3092\u6709\u52b9\u306b\u3059\u308b\u306b\u306f\u3001 \u306e\u30ea\u30b9\u30c8\u306b\u30df\u30c9\u30eb\u30a6\u30a7\u30a2\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002<code>settings.py<\/code><code>MIDDLEWARE<\/code><\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"18\">\n<li>\u30b9\u30b1\u30b8\u30e5\u30fc\u30eb\u3055\u308c\u305f\u30bf\u30b9\u30af\u3068\u30d0\u30c3\u30af\u30b0\u30e9\u30a6\u30f3\u30c9 \u30bf\u30b9\u30af<\/li>\n<\/ol>\n\n\n\n<p>Web \u30a2\u30d7\u30ea\u3067\u306f\u3001\u96fb\u5b50\u30e1\u30fc\u30eb \u30ec\u30dd\u30fc\u30c8\u3092\u6bce\u65e5\u9001\u4fe1\u3059\u308b\u306a\u3069\u306e\u30b9\u30b1\u30b8\u30e5\u30fc\u30eb\u3055\u308c\u305f\u30bf\u30b9\u30af\u3084\u3001\u6642\u9593\u306e\u304b\u304b\u308b\u30d5\u30a1\u30a4\u30eb\u306e\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u306e\u51e6\u7406\u306a\u3069\u306e\u30d0\u30c3\u30af\u30b0\u30e9\u30a6\u30f3\u30c9 \u30bf\u30b9\u30af\u3092\u5b9f\u884c\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002 \u3053\u308c\u3089\u306e\u6a5f\u80fd\u3092\u5b9f\u88c5\u3059\u308b\u306b\u306f\u3001Celery\u3084Django\u30d0\u30c3\u30af\u30b0\u30e9\u30a6\u30f3\u30c9\u30bf\u30b9\u30af\u306a\u3069\u306e\u30b5\u30fc\u30c9\u30d1\u30fc\u30c6\u30a3\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p>Celery\u306f\u3001\u8907\u6570\u306e\u30bf\u30b9\u30af\u30b9\u30b1\u30b8\u30e5\u30fc\u30ea\u30f3\u30b0\u6226\u7565\u3068\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3092\u30b5\u30dd\u30fc\u30c8\u3059\u308b\u5f37\u529b\u306a\u5206\u6563\u30bf\u30b9\u30af\u30ad\u30e5\u30fc\u30e9\u30a4\u30d6\u30e9\u30ea\u3067\u3059\u3002 Django \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067 Celery \u3092\u4f7f\u7528\u3059\u308b\u306b\u306f\u3001Celery \u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3066\u8a2d\u5b9a\u3092\u69cb\u6210\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p>Django \u30d0\u30c3\u30af\u30b0\u30e9\u30a6\u30f3\u30c9\u30bf\u30b9\u30af\u306f\u3001Django \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u7528\u306b\u7279\u5225\u306b\u8a2d\u8a08\u3055\u308c\u305f\u30b7\u30f3\u30d7\u30eb\u306a\u30d0\u30c3\u30af\u30b0\u30e9\u30a6\u30f3\u30c9\u30bf\u30b9\u30af\u30e9\u30a4\u30d6\u30e9\u30ea\u3067\u3059\u3002 \u3053\u308c\u306b\u3088\u308a\u3001\u6642\u9593\u306e\u304b\u304b\u308b\u64cd\u4f5c\u3092\u8981\u6c42\u51e6\u7406\u30d5\u30ed\u30fc\u304b\u3089\u5207\u308a\u96e2\u3057\u3066\u3001\u5fdc\u7b54\u6027\u3092\u5411\u4e0a\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"19\">\n<li>\u539f\u85ac\u958b\u767a<\/li>\n<\/ol>\n\n\n\n<p>Web \u30a2\u30d7\u30ea\u3092\u69cb\u7bc9\u3059\u308b\u3068\u304d\u306b\u3001\u4ed6\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u304c\u4f7f\u7528\u3059\u308b API \u3092\u63d0\u4f9b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002 Django REST \u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306f\u3001\u30b7\u30ea\u30a2\u30eb\u5316\u3001\u8a8d\u8a3c\u3001\u30a2\u30af\u30bb\u30b9\u8a31\u53ef\u3001\u30da\u30fc\u30b8\u30f3\u30b0\u306a\u3069\u3092\u63d0\u4f9b\u3059\u308b Web API \u3092\u69cb\u7bc9\u3059\u308b\u305f\u3081\u306e\u5f37\u529b\u306a\u30c4\u30fc\u30eb\u30ad\u30c3\u30c8\u3067\u3059\u3002<\/p>\n\n\n\n<p>Django \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067 REST \u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3092\u4f7f\u7528\u3059\u308b\u306b\u306f\u3001\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3001\u95a2\u9023\u3059\u308b\u8a2d\u5b9a\u3092\u69cb\u6210\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u305d\u306e\u5f8c\u3001\u30d3\u30e5\u30fc\u3001\u30b7\u30ea\u30a2\u30e9\u30a4\u30b6\u30fc\u3001\u30eb\u30fc\u30bf\u30fc\u3092\u4f7f\u7528\u3057\u3066 API \u3092\u69cb\u7bc9\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"20\">\n<li>\u8a66\u9a13<\/li>\n<\/ol>\n\n\n\n<p>\u30c6\u30b9\u30c8\u306e\u4f5c\u6210\u306f\u3001\u30b3\u30fc\u30c9\u306e\u54c1\u8cea\u3068\u4fdd\u5b88\u6027\u3092\u78ba\u4fdd\u3059\u308b\u305f\u3081\u306e\u9375\u3067\u3059\u3002 Django \u306b\u306f\u3001\u30d3\u30e5\u30fc\u3001\u30e2\u30c7\u30eb\u3001\u30d5\u30a9\u30fc\u30e0\u306a\u3069\u306e\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3092\u7c21\u5358\u306b\u30c6\u30b9\u30c8\u3067\u304d\u308b\u7d44\u307f\u8fbc\u307f\u306e\u30c6\u30b9\u30c8\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u304c\u7528\u610f\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u30c6\u30b9\u30c8\u3092\u8a18\u8ff0\u3059\u308b\u306b\u306f\u3001\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3057\u3066\u30c6\u30b9\u30c8 \u30b1\u30fc\u30b9\u3092\u8a18\u8ff0\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u30c6\u30b9\u30c8\u30b1\u30fc\u30b9\u306f\u3001\u30c6\u30b9\u30c8\u30c7\u30fc\u30bf\u3092\u8a2d\u5b9a\u304a\u3088\u3073\u30af\u30ea\u30fc\u30f3\u30a2\u30c3\u30d7\u3059\u308b\u305f\u3081\u306e\u30af\u30e9\u30b9\u3068\u5b9f\u88c5\u304a\u3088\u3073\u30e1\u30bd\u30c3\u30c9\u304b\u3089\u7d99\u627f\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u30c6\u30b9\u30c8 \u30e1\u30bd\u30c3\u30c9\u3067\u306f\u3001\u30a2\u30b5\u30fc\u30b7\u30e7\u30f3\u95a2\u6570\u3092\u4f7f\u7528\u3057\u3066\u30b3\u30fc\u30c9\u306e\u52d5\u4f5c\u3092\u8abf\u3079\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<code>tests.py<\/code><code>django.test.TestCase<\/code><code>setUp<\/code><code>tearDown<\/code><\/p>\n\n\n\n<p>\u3053\u308c\u3089\u306e Django \u306e\u30c8\u30d4\u30c3\u30af\u3068\u624b\u6cd5\u3092\u7fd2\u5f97\u3059\u308b\u3053\u3068\u3067\u3001\u3088\u308a\u9ad8\u54c1\u8cea\u3067\u30b9\u30b1\u30fc\u30e9\u30d6\u30eb\u306a Web \u30a2\u30d7\u30ea\u3092\u69cb\u7bc9\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002 Django\u3067\u306e\u958b\u767a\u7d4c\u9a13\u3092\u7a4d\u3080\u306b\u3064\u308c\u3066\u3001\u767a\u898b\u3055\u308c\u308b\u306e\u3092\u5f85\u3063\u3066\u3044\u308b\u3088\u308a\u8208\u5473\u6df1\u304f\u4fbf\u5229\u306a\u6a5f\u80fd\u304c\u898b\u3064\u304b\u308b\u3067\u3057\u3087\u3046<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1610\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u30d7\u30ec\u30bc\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u3068\u63a2\u7d22\u3002 \u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001Django\u306b\u95a2\u3059\u308b\u4ed6\u306e\u30c8\u30d4\u30c3\u30af\u3068\u63d0\u6848\u306b\u3064\u3044\u3066\u5f15\u304d\u7d9a\u304d\u8aac\u660e\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"21\">\n<li>\u5c55\u958b<\/li>\n<\/ol>\n\n\n\n<p>Django \u30a2\u30d7\u30ea\u3092\u30e9\u30a4\u30d6\u306b\u3059\u308b\u306b\u306f\u3001\u904b\u7528\u30b5\u30fc\u30d0\u30fc\u306b\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u904b\u7528\u74b0\u5883\u3068\u958b\u767a\u74b0\u5883\u306b\u306f\u3001\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3001\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u3001\u30b9\u30b1\u30fc\u30e9\u30d3\u30ea\u30c6\u30a3\u306a\u3069\u3001\u3044\u304f\u3064\u304b\u306e\u91cd\u8981\u306a\u9055\u3044\u304c\u3042\u308a\u307e\u3059\u3002 Django \u30a2\u30d7\u30ea\u3092\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u305f\u3081\u306e\u30d2\u30f3\u30c8\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u9069\u5207\u306a\u30b5\u30fc\u30d0\u30fc\u3068\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u9078\u629e\u3057\u307e\u3059\u3002 \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30cb\u30fc\u30ba\u306b\u57fa\u3065\u3044\u3066\u3001\u9069\u5207\u306a\u30cf\u30fc\u30c9\u30a6\u30a7\u30a2 \u30ea\u30bd\u30fc\u30b9\u3068\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u7a2e\u985e\u3092\u9078\u629e\u3057\u307e\u3059\u3002 \u4e00\u822c\u7684\u306a\u9078\u629e\u80a2\u306b\u306f\u3001AWS\u3001Google Cloud\u3001DigitalOcean \u306a\u3069\u306e\u30af\u30e9\u30a6\u30c9\u30b5\u30fc\u30d0\u30fc\u3084\u3001AWS RDS \u3084 Google Cloud SQL \u306a\u3069\u306e\u30de\u30cd\u30fc\u30b8\u30c9\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30b5\u30fc\u30d3\u30b9\u306a\u3069\u304c\u3042\u308a\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u5c02\u7528\u306eWeb\u30b5\u30fc\u30d0\u30fc\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002 \u672c\u756a\u74b0\u5883\u3067\u306f\u3001Gunicorn\u3001uWSGI\u3001mod_wsgi\u306a\u3069\u306e\u7279\u6b8a\u306aWeb\u30b5\u30fc\u30d0\u30fc\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u3092\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u3053\u308c\u3089\u306e\u30b5\u30fc\u30d0\u30fc\u306f\u3001Django\u306e\u7d44\u307f\u8fbc\u307f\u30b5\u30fc\u30d0\u30fc\u3088\u308a\u3082\u9ad8\u3044\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3068\u5b89\u5b9a\u6027\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u9759\u7684\u30d5\u30a1\u30a4\u30eb\u3068\u30e1\u30c7\u30a3\u30a2\u30d5\u30a1\u30a4\u30eb\u30b5\u30fc\u30d0\u30fc\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002 \u904b\u7528\u74b0\u5883\u3067\u306f\u3001\u9759\u7684\u30d5\u30a1\u30a4\u30eb\u3068\u30e1\u30c7\u30a3\u30a2 \u30d5\u30a1\u30a4\u30eb\u306f\u5225\u306e\u30b5\u30fc\u30d0\u30fc\u307e\u305f\u306f CDN \u30b5\u30fc\u30d3\u30b9\u306b\u3088\u3063\u3066\u63d0\u4f9b\u3055\u308c\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u3053\u308c\u306b\u3088\u308a\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30b5\u30fc\u30d0\u30fc\u306e\u8ca0\u8377\u304c\u8efd\u6e1b\u3055\u308c\u3001\u5fdc\u7b54\u6027\u304c\u5411\u4e0a\u3057\u307e\u3059\u3002 \u4e00\u822c\u7684\u306a\u9078\u629e\u80a2\u306b\u306f\u3001Nginx\u3001Apache\u3001\u307e\u305f\u306fCloudflare\u3084AWS CloudFront\u306a\u3069\u306e\u30b5\u30fc\u30c9\u30d1\u30fc\u30c6\u30a3\u306eCDN\u30b5\u30fc\u30d3\u30b9\u304c\u542b\u307e\u308c\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u8a2d\u5b9a\u3092\u69cb\u6210\u3057\u307e\u3059\u3002 \u30a2\u30d7\u30ea\u3067 SSL\/TLS \u6697\u53f7\u5316\u3092\u4f7f\u7528\u3057\u3001\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306e\u30d9\u30b9\u30c8 \u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u306b\u5f93\u3063\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002 \u3067\u306f\u3001\u3001\u304a\u3088\u3073\u305d\u306e\u4ed6\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u95a2\u9023\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<code>settings.py<\/code><code>ALLOWED_HOSTS<\/code><code>SECURE_SSL_REDIRECT<\/code><code>CSRF_COOKIE_SECURE<\/code><\/li>\n\n\n\n<li>\u76e3\u8996\u3068\u30ed\u30b0\u8a18\u9332\u3002 \u76e3\u8996\u30b7\u30b9\u30c6\u30e0\u3068\u30ed\u30b0 \u30b7\u30b9\u30c6\u30e0\u3092\u8a2d\u5b9a\u3057\u3066\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u6b63\u5e38\u6027\u3068\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u3067\u628a\u63e1\u3057\u307e\u3059\u3002 \u4e00\u822c\u7684\u306a\u76e3\u8996\u304a\u3088\u3073\u30ed\u30ae\u30f3\u30b0\u30c4\u30fc\u30eb\u306b\u306f\u3001Prometheus\u3001Grafana\u3001ELK Stack\u3001\u307e\u305f\u306fDatadog\u3084New Relic\u306a\u3069\u306e\u30b5\u30fc\u30c9\u30d1\u30fc\u30c6\u30a3\u30b5\u30fc\u30d3\u30b9\u304c\u542b\u307e\u308c\u307e\u3059\u3002<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\" start=\"22\">\n<li>\u7d99\u7d9a\u7684\u30a4\u30f3\u30c6\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3\u3068\u7d99\u7d9a\u7684\u30c7\u30d7\u30ed\u30a4 (CI\/CD)<\/li>\n<\/ol>\n\n\n\n<p>CI\/CD \u306f\u3001\u6700\u65b0\u306e\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u958b\u767a\u30d7\u30ed\u30bb\u30b9\u306e\u91cd\u8981\u306a\u90e8\u5206\u3067\u3042\u308a\u3001\u30c6\u30b9\u30c8\u3001\u30d3\u30eb\u30c9\u3001\u30c7\u30d7\u30ed\u30a4 \u30d7\u30ed\u30bb\u30b9\u306e\u81ea\u52d5\u5316\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002 CI\/CD \u3092\u5b9f\u88c5\u3059\u308b\u306b\u306f\u3001\u9069\u5207\u306a\u30c4\u30fc\u30eb\u3068\u30b5\u30fc\u30d3\u30b9\u3092\u9078\u629e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u4e00\u822c\u7684\u306a\u9078\u629e\u80a2\u306b\u306f\u3001Jenkins\u3001GitLab CI\u3001GitHub Actions\u3001\u307e\u305f\u306f CircleCI \u3084 Travis CI \u306a\u3069\u306e\u30b5\u30fc\u30c9\u30d1\u30fc\u30c6\u30a3\u30b5\u30fc\u30d3\u30b9\u304c\u542b\u307e\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<p>CI\/CD \u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u3092\u69cb\u6210\u3059\u308b\u306b\u306f\u3001\u30c6\u30b9\u30c8\u3001\u30d3\u30eb\u30c9\u3001\u30c7\u30d7\u30ed\u30a4\u306e\u30d7\u30ed\u30bb\u30b9\u3092\u8a18\u8ff0\u3059\u308b\u69cb\u6210\u30d5\u30a1\u30a4\u30eb\u3092\u8a18\u8ff0\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u69cb\u6210\u30d5\u30a1\u30a4\u30eb\u306e\u5f62\u5f0f\u3068\u5185\u5bb9\u306f\u3001\u9078\u629e\u3057\u305f CI\/CD \u30c4\u30fc\u30eb\u306b\u3088\u3063\u3066\u7570\u306a\u308a\u307e\u3059\u3002 \u69cb\u6210\u30d5\u30a1\u30a4\u30eb\u3067\u306f\u3001\u4f9d\u5b58\u95a2\u4fc2\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3001\u30c6\u30b9\u30c8\u306e\u5b9f\u884c\u3001\u9759\u7684\u30d5\u30a1\u30a4\u30eb\u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u5316\u3001\u30a2\u30d7\u30ea\u306e\u30c7\u30d7\u30ed\u30a4\u306e\u65b9\u6cd5\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"23\">\n<li>\u56fd\u969b\u5316\u3068\u30ed\u30fc\u30ab\u30ea\u30bc\u30fc\u30b7\u30e7\u30f3<\/li>\n<\/ol>\n\n\n\n<p>\u30a2\u30d7\u30ea\u3067\u8907\u6570\u306e\u8a00\u8a9e\u3068\u5730\u57df\u3092\u30b5\u30dd\u30fc\u30c8\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u306f\u3001\u56fd\u969b\u5316\u3068\u30ed\u30fc\u30ab\u30e9\u30a4\u30ba\u3092\u884c\u3046\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 Django\u306f\u3001\u30c6\u30ad\u30b9\u30c8\u306e\u7ffb\u8a33\u3092\u5bb9\u6613\u306b\u3059\u308b\u7d44\u307f\u8fbc\u307f\u306e\u56fd\u969b\u5316\u304a\u3088\u3073\u30ed\u30fc\u30ab\u30ea\u30bc\u30fc\u30b7\u30e7\u30f3\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3092\u63d0\u4f9b\u3057\u307e\u3059<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1610\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u3001\u65e5\u4ed8\u3068\u6570\u5024\u306e\u66f8\u5f0f\u8a2d\u5b9a\u306a\u3069\u3002 Django \u306e\u56fd\u969b\u5316\u304a\u3088\u3073\u30ed\u30fc\u30ab\u30ea\u30bc\u30fc\u30b7\u30e7\u30f3\u6a5f\u80fd\u3092\u4f7f\u7528\u3059\u308b\u305f\u3081\u306e\u30d2\u30f3\u30c8\u3092\u3044\u304f\u3064\u304b\u7d39\u4ecb\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u7ffb\u8a33\u6587\u5b57\u5217\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002 \u30b3\u30fc\u30c9\u3068\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3067\u3001\u95a2\u6570\u307e\u305f\u306f\u30a8\u30a4\u30ea\u30a2\u30b9\u3092\u4f7f\u7528\u3057\u3066\u7ffb\u8a33\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u6587\u5b57\u5217\u3092\u30e9\u30c3\u30d7\u3057\u307e\u3059\u3002 \u4f8b\u3048\u3070\uff1a\u3002<code>gettext<\/code><code>_<\/code><code>_(\"Hello, world!\")<\/code><\/li>\n\n\n\n<li>\u7ffb\u8a33\u6587\u5b57\u5217\u3092\u62bd\u51fa\u3057\u307e\u3059\u3002 Django \u306e admin \u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u3001\u7ffb\u8a33\u3055\u308c\u305f\u3059\u3079\u3066\u306e\u6587\u5b57\u5217\u3092\u30d5\u30a1\u30a4\u30eb\u306b\u62bd\u51fa\u3057\u307e\u3059\u3002 \u4f8b\u3048\u3070\uff1a\u3002<code>makemessages<\/code><code>.po<\/code><code>python manage.py makemessages -l zh_Hans<\/code><\/li>\n\n\n\n<li>\u30d5\u30a1\u30a4\u30eb\u3092\u7ffb\u8a33\u3057\u307e\u3059\u3002 \u30d5\u30a1\u30a4\u30eb\u3092\u958b\u304d\u3001\u5404\u6587\u5b57\u5217\u306e\u7ffb\u8a33\u3092\u5165\u529b\u3057\u307e\u3059\u3002 \u4f8b:\u30d0\u30c3\u30b7\u30e5\u30b3\u30d4\u30fc\u30b3\u30fc\u30c9<code>.po<\/code><code>.po<\/code><code>#: myapp\/views.py:10 msgid \"Hello, world!\" msgstr \"\u4f60\u597d\uff0c\u4e16\u754c\uff01\"<\/code><\/li>\n\n\n\n<li>\u7ffb\u8a33\u30d5\u30a1\u30a4\u30eb\u3092\u30b3\u30f3\u30d1\u30a4\u30eb\u3057\u307e\u3059\u3002 Django \u306e\u7ba1\u7406\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u3001\u30d5\u30a1\u30a4\u30eb\u3092\u30d0\u30a4\u30ca\u30ea\u30d5\u30a1\u30a4\u30eb\u306b\u30b3\u30f3\u30d1\u30a4\u30eb\u3057\u307e\u3059\u3002 \u4f8b\u3048\u3070\uff1a\u3002<code>compilemessages<\/code><code>.po<\/code><code>.mo<\/code><code>python manage.py compilemessages<\/code><\/li>\n\n\n\n<li>\u8a00\u8a9e\u3068\u5730\u57df\u3092\u69cb\u6210\u3057\u307e\u3059\u3002 \u3067\u3001\u8a2d\u5b9a\u3057\u3001\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002 \u5fc5\u8981\u306b\u5fdc\u3058\u3066\u3001\u304a\u3088\u3073\u305d\u306e\u4ed6\u306e\u95a2\u9023\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002<code>settings.py<\/code><code>LANGUAGE_CODE<\/code><code>USE_I18N<\/code><code>LANGUAGES<\/code><code>LOCALE_PATHS<\/code><\/li>\n\n\n\n<li>\u65e5\u4ed8\u3068\u6570\u5024\u306e\u66f8\u5f0f\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002 \u30b3\u30fc\u30c9\u3068\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3067\u306f\u3001\u65e5\u4ed8\u3068\u6570\u5024\u3092\u3001\u30bf\u30b0\u3068\u95a2\u6570\u3067\u66f8\u5f0f\u8a2d\u5b9a\u3057\u307e\u3059\u3002 \u4f8b\u3048\u3070\uff1a\u3002<code>date<\/code><code>time<\/code><code>number<\/code><code>currency<\/code><code>{{ value|number }}<\/code><\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\" start=\"24\">\n<li>Django \u306e\u62e1\u5f35\u3068\u30ab\u30b9\u30bf\u30de\u30a4\u30ba<\/li>\n<\/ol>\n\n\n\n<p>Django\u306f\u3001\u62e1\u5f35\u6027\u3068\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u53ef\u80fd\u306a\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u3042\u308a\u3001\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u305d\u306e\u52d5\u4f5c\u3068\u6a5f\u80fd\u3092\u5909\u66f4\u3067\u304d\u307e\u3059\u3002 Django \u3092\u62e1\u5f35\u304a\u3088\u3073\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3059\u308b\u305f\u3081\u306e\u30d2\u30f3\u30c8\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30b5\u30fc\u30c9\u30d1\u30fc\u30c6\u30a3\u306e\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002 Django\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u306f\u3001\u30e6\u30fc\u30b6\u30fc\u8a8d\u8a3c\u3001\u30d5\u30a9\u30fc\u30e0\u51e6\u7406\u3001\u753b\u50cf\u306e\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u306a\u3069\u306e\u4e00\u822c\u7684\u306a\u6a5f\u80fd\u3092\u5b9f\u88c5\u3059\u308b\u306e\u306b\u5f79\u7acb\u3064\u591a\u304f\u306e\u512a\u308c\u305f\u30b5\u30fc\u30c9\u30d1\u30fc\u30c6\u30a3\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u63d0\u4f9b\u3057\u3066\u3044\u307e\u3059\u3002 \u30b5\u30fc\u30c9\u30d1\u30fc\u30c6\u30a3\u306e\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u9078\u629e\u3059\u308b\u3068\u304d\u306f\u3001\u305d\u306e\u54c1\u8cea\u3001\u4e92\u63db\u6027\u3001\u304a\u3088\u3073\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/li>\n\n\n\n<li>\u30ab\u30b9\u30bf\u30e0 \u30df\u30c9\u30eb\u30a6\u30a7\u30a2\u3001\u30d3\u30e5\u30fc\u3001\u30e2\u30c7\u30eb\u3001\u304a\u3088\u3073\u30d5\u30a9\u30fc\u30e0\u3092\u8a18\u8ff0\u3057\u307e\u3059\u3002 Django \u306e\u7d44\u307f\u8fbc\u307f\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u304c\u30cb\u30fc\u30ba\u306b\u5408\u308f\u306a\u3044\u5834\u5408\u306f\u3001\u30ab\u30b9\u30bf\u30e0 \u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3092\u8a18\u8ff0\u3057\u3001Django \u30af\u30e9\u30b9\u304b\u3089\u7d99\u627f\u3067\u304d\u307e\u3059\u3002 \u30ab\u30b9\u30bf\u30e0\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3067\u306f\u3001\u30e1\u30bd\u30c3\u30c9\u306e\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3001\u30d7\u30ed\u30d1\u30c6\u30a3\u306e\u8ffd\u52a0\u3001\u304a\u3088\u3073\u65b0\u6a5f\u80fd\u306e\u5b9f\u88c5\u3092\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30ab\u30b9\u30bf\u30e0\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30e9\u30d9\u30eb\u3068\u30d5\u30a3\u30eb\u30bf\u30fc\u3092\u8a18\u8ff0\u3057\u307e\u3059\u3002 \u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306b\u8907\u96d1\u306a\u30ed\u30b8\u30c3\u30af\u3084\u66f8\u5f0f\u8a2d\u5b9a\u3092\u5b9f\u88c5\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u306f\u3001\u30ab\u30b9\u30bf\u30e0 \u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u30e9\u30d9\u30eb\u3068\u30d5\u30a3\u30eb\u30bf\u30fc\u3092\u8a18\u8ff0\u3067\u304d\u307e\u3059\u3002 \u30ab\u30b9\u30bf\u30e0 \u30bf\u30b0\u3068\u30d5\u30a3\u30eb\u30bf\u30fc\u306f\u3001\u7d44\u307f\u8fbc\u307f\u306e\u30bf\u30b0\u3084\u30d5\u30a3\u30eb\u30bf\u30fc\u306a\u3069\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3067\u4f7f\u7528\u3067\u304d\u308b Python \u95a2\u6570\u3067\u3059\u3002<\/li>\n\n\n\n<li>Django \u30b7\u30b0\u30ca\u30eb\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002 \u524d\u8ff0\u306e\u3088\u3046\u306b\u3001Django \u30b7\u30b0\u30ca\u30eb\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u7279\u5b9a\u306e\u30a2\u30af\u30b7\u30e7\u30f3\u304c\u767a\u751f\u3057\u305f\u3068\u304d\u306b\u30b3\u30fc\u30c9\u3092\u5b9f\u884c\u3067\u304d\u307e\u3059\u3002 \u30b7\u30b0\u30ca\u30eb\u3092\u4f7f\u7528\u3057\u3066\u3001\u30ed\u30ae\u30f3\u30b0\u3001\u30c7\u30fc\u30bf\u691c\u8a3c\u3001\u307e\u305f\u306f\u305d\u306e\u4ed6\u306e\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u9593\u6a5f\u80fd\u3092\u5b9f\u88c5\u3067\u304d\u307e\u3059\u3002<\/li>\n<\/ul>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u30d2\u30f3\u30c8\u3068\u63a8\u5968\u4e8b\u9805\u3092\u7fd2\u5f97\u3059\u308b\u3053\u3068\u3067\u3001Django\u306e\u30d1\u30ef\u30fc\u3092\u5229\u7528\u3057\u3066\u9ad8\u54c1\u8cea\u3067\u30b9\u30b1\u30fc\u30e9\u30d6\u30eb\u306a\u30d3\u30eb\u30c9\u3092\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1610\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u30a6\u30a7\u30d6\u30a2\u30d7\u30ea\u3002 Django \u958b\u767a\u30b9\u30ad\u30eb\u3092\u3055\u3089\u306b\u5411\u4e0a\u3055\u305b\u308b\u65b9\u6cd5\u3092\u3044\u304f\u3064\u304b\u7d39\u4ecb\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"25\">\n<li>\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u3092\u5b66\u3073\u3001\u305d\u308c\u306b\u5f93\u3046<\/li>\n<\/ol>\n\n\n\n<p>Django \u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u306e\u30d9\u30b9\u30c8 \u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u3092\u7406\u89e3\u3057\u3001\u305d\u308c\u306b\u5f93\u3046\u3053\u3068\u306f\u3001\u4fdd\u5b88\u304c\u5bb9\u6613\u3067\u52b9\u7387\u7684\u306a\u30b3\u30fc\u30c9\u3092\u8a18\u8ff0\u3059\u308b\u306e\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002 \u516c\u5f0f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u8aad\u307f\u3001\u958b\u767a\u8005\u30d5\u30a9\u30fc\u30e9\u30e0\u306b\u53c2\u52a0\u3057\u3001\u30d6\u30ed\u30b0\u3092\u8cfc\u8aad\u3057\u3066\u3001Django\u958b\u767a\u306b\u95a2\u3059\u308b\u6700\u65b0\u60c5\u5831\u3068\u30d2\u30f3\u30c8\u3092\u5165\u624b\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"26\">\n<li>\u30c6\u30af\u30ce\u30ed\u30b8\u30fc\u306b\u3064\u3044\u3066\u5b66\u3076<\/li>\n<\/ol>\n\n\n\n<p>Django \u306f\u30d5\u30eb\u6a5f\u80fd\u306e Web \u958b\u767a\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u3059\u304c\u3001\u4ed6\u306e\u95a2\u9023\u30c6\u30af\u30ce\u30ed\u30b8\u3084\u30c4\u30fc\u30eb\u3092\u5b66\u3076\u3053\u3068\u3067\u3001\u30a2\u30d7\u30ea\u306e\u6a5f\u80fd\u3092\u62e1\u5f35\u3057\u3001\u958b\u767a\u306e\u751f\u7523\u6027\u3092\u5411\u4e0a\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u30d5\u30ed\u30f3\u30c8\u30a8\u30f3\u30c9\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af(React\u3084Vue.js\u306a\u3069)\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u6700\u9069\u5316\u624b\u6cd5\u3001\u30b3\u30f3\u30c6\u30ca\u5316(Docker\u306a\u3069)\u3001DevOps\u30c4\u30fc\u30eb(Kubernetes\u3084Ansible\u306a\u3069)\u306b\u3064\u3044\u3066\u5b66\u3073\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"27\">\n<li>\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u53c2\u52a0\u3059\u308b<\/li>\n<\/ol>\n\n\n\n<p>Django\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u306e\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u53c2\u52a0\u3059\u308b\u3068\u3001\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30b9\u30ad\u30eb\u3092\u5411\u4e0a\u3055\u305b\u3001\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u3092\u5b66\u3073\u3001\u4ed6\u306e\u958b\u767a\u8005\u3068\u51fa\u4f1a\u3046\u306e\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002 \u30b3\u30fc\u30c9\u3001\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3001\u307e\u305f\u306f\u30c6\u30b9\u30c8\u306f\u3001Django \u81ea\u4f53\u307e\u305f\u306f\u4ed6\u306e Django \u30a2\u30d7\u30ea\u3084\u30e9\u30a4\u30d6\u30e9\u30ea\u306b\u6295\u7a3f\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"28\">\n<li>\u4ed6\u306e\u30e6\u30fc\u30b6\u30fc\u3068\u5354\u529b\u3059\u308b<\/li>\n<\/ol>\n\n\n\n<p>\u4ed6\u306e\u958b\u767a\u8005\u3068\u5171\u540c\u4f5c\u696d\u3059\u308b\u3053\u3068\u3067\u3001\u65b0\u3057\u3044\u30b9\u30ad\u30eb\u3092\u5b66\u3073\u3001\u7d4c\u9a13\u3092\u5171\u6709\u3057\u3001\u554f\u984c\u3092\u89e3\u6c7a\u3067\u304d\u307e\u3059\u3002 \u5730\u57df\u306e\u958b\u767a\u8005\u30df\u30fc\u30c8\u30a2\u30c3\u30d7\u3001\u30aa\u30f3\u30e9\u30a4\u30f3\u30d5\u30a9\u30fc\u30e9\u30e0\u3001\u307e\u305f\u306f\u30ef\u30fc\u30af\u30b0\u30eb\u30fc\u30d7\u306b\u53c2\u52a0\u3057\u3066\u3001\u3064\u306a\u304c\u308a\u3001\u30b5\u30dd\u30fc\u30c8\u3092\u53d7\u3051\u307e\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"29\">\n<li>\u7d99\u7d9a\u7684\u306a\u5b66\u7fd2\u3068\u5b9f\u8df5<\/li>\n<\/ol>\n\n\n\n<p>\u958b\u767a\u8005\u3068\u3057\u3066\u3001\u3042\u306a\u305f\u306f\u5e38\u306b\u65b0\u3057\u3044\u30b9\u30ad\u30eb\u3092\u5b66\u3073\u3001\u30c6\u30af\u30ce\u30ed\u30b8\u30fc\u306b\u8ffd\u3044\u3064\u3044\u3066\u3044\u307e\u3059\u3002 \u6280\u8853\u8a18\u4e8b\u3092\u8aad\u3093\u3060\u308a\u3001\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u3092\u898b\u305f\u308a\u3001\u5b9a\u671f\u7684\u306b\u30b3\u30fc\u30b9\u306b\u53c2\u52a0\u3057\u305f\u308a\u3057\u3066\u3001Django\u306e\u958b\u767a\u30b9\u30ad\u30eb\u3092\u5411\u4e0a\u3055\u305b\u307e\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"30\">\n<li>\u5fcd\u8010\u5f37\u304f\u7c98\u308a\u5f37\u304f<\/li>\n<\/ol>\n\n\n\n<p>Django\u958b\u767a\u8005\u3068\u3057\u3066\u6210\u529f\u3059\u308b\u306b\u306f\u3001\u6642\u9593\u3068\u52b4\u529b\u304c\u304b\u304b\u308a\u307e\u3059\u3002 \u8ab2\u984c\u306b\u76f4\u9762\u3057\u305f\u3068\u304d\u306f\u5fcd\u8010\u5f37\u304f\u7c98\u308a\u5f37\u304f\u3001\u6311\u6226\u3057\u7d9a\u3051\u3001\u5b66\u3073\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044\u3002 \u7d4c\u9a13\u3092\u7a4d\u3080\u306b\u3064\u308c\u3066\u3001\u3088\u308a\u591a\u304f\u306e\u30b9\u30ad\u30eb\u3092\u7fd2\u5f97\u3057\u3001\u3088\u308a\u8907\u96d1\u306a\u554f\u984c\u3092\u89e3\u6c7a\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u63a8\u5968\u4e8b\u9805\u3068\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u306b\u5f93\u3046\u3053\u3068\u3067\u3001Django \u3092\u3088\u308a\u52b9\u679c\u7684\u306b\u6d3b\u7528\u3057\u3066\u3001\u6a5f\u80fd\u8c4a\u5bcc\u3067\u9ad8\u6027\u80fd\u306a Web \u30a2\u30d7\u30ea\u3092\u69cb\u7bc9\u3057\u3001\u958b\u767a\u30ad\u30e3\u30ea\u30a2\u3067\u6210\u529f\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1610\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>\u30ab\u30b9\u30bf\u30e0\u7ba1\u7406\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Django\u306b\u306f\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u5185\u306e\u30c7\u30fc\u30bf\u3092\u7c21\u5358\u306b\u7ba1\u7406\u3067\u304d\u308b\u5f37\u529b\u306a\u7ba1\u7406\u30b5\u30a4\u30c8\u304c\u4ed8\u5c5e\u3057\u3066\u3044\u307e\u3059\u3002 \u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u3001\u30b7\u30b9\u30c6\u30e0\u7ba1\u7406\u8005\u306f\u30e2\u30c7\u30eb\u5b9a\u7fa9\u306b\u57fa\u3065\u3044\u3066\u30d5\u30a9\u30fc\u30e0\u3068\u30ea\u30b9\u30c8\u30d3\u30e5\u30fc\u3092\u81ea\u52d5\u7684\u306b\u751f\u6210\u3057\u307e\u3059\u3002 \u305f\u3060\u3057\u3001\u5834\u5408\u306b\u3088\u3063\u3066\u306f\u3001\u7ba1\u7406\u8005\u306e\u80cc\u666f\u306e\u5916\u89b3\u3068\u52d5\u4f5c\u3092\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 Django \u7ba1\u7406\u30d0\u30c3\u30af\u30b0\u30e9\u30a6\u30f3\u30c9\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30a4\u30b9\u3092\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3059\u308b\u65b9\u6cd5\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30e2\u30c7\u30eb\u3092\u767b\u9332\u3057\u3001ModelAdmin \u30af\u30e9\u30b9\u3092\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3059\u308b<\/li>\n<\/ol>\n\n\n\n<p>\u7ba1\u7406\u30d0\u30c3\u30af\u30b0\u30e9\u30a6\u30f3\u30c9\u3067\u30e2\u30c7\u30eb\u30d5\u30a9\u30fc\u30e0\u3068\u30ea\u30b9\u30c8\u30d3\u30e5\u30fc\u3092\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3059\u308b\u306b\u306f\u3001\u30e2\u30c7\u30eb\u306e\u30ab\u30b9\u30bf\u30e0\u30af\u30e9\u30b9\u3092\u4f5c\u6210\u3057\u3001\u30d5\u30a1\u30a4\u30eb\u306b\u767b\u9332\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u6b21\u306b\u7c21\u5358\u306a\u4f8b\u3092\u793a\u3057\u307e\u3059\u3002<code>ModelAdmin<\/code><code>admin.py<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django.contrib import admin\nfrom .models import MyModel\n\nclass MyModelAdmin(admin.ModelAdmin):\n    # \u5728\u8fd9\u91cc\u81ea\u5b9a\u4e49 ModelAdmin \u5c5e\u6027\u548c\u65b9\u6cd5\n\nadmin.site.register(MyModel, MyModelAdmin)\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\">\n<li>\u30ea\u30b9\u30c8\u30d3\u30e5\u30fc\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba<\/li>\n<\/ol>\n\n\n\n<p><code>ModelAdmin<\/code>&nbsp;Listing \u30af\u30e9\u30b9\u306b\u306f\u3001\u30e2\u30c7\u30eb\u306e\u30ea\u30b9\u30c8 \u30d3\u30e5\u30fc\u3092\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3067\u304d\u308b\u591a\u6570\u306e\u30d7\u30ed\u30d1\u30c6\u30a3\u3068\u30e1\u30bd\u30c3\u30c9\u304c\u7528\u610f\u3055\u308c\u3066\u3044\u307e\u3059\u3002 \u4f8b\u3048\u3070\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>list_display<\/code>: \u30ea\u30b9\u30c8 \u30d3\u30e5\u30fc\u306b\u8868\u793a\u3055\u308c\u308b\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u6307\u5b9a\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li><code>list_filter<\/code>: \u30ea\u30b9\u30c8 \u30d3\u30e5\u30fc\u3092\u6307\u5b9a\u3059\u308b\u30d5\u30a3\u30eb\u30bf\u30fc\u3002<\/li>\n\n\n\n<li><code>search_fields<\/code>: \u30ea\u30b9\u30c8 \u30d3\u30e5\u30fc\u3092\u6307\u5b9a\u3059\u308b\u691c\u7d22\u30d5\u30a3\u30fc\u30eb\u30c9\u3002<\/li>\n\n\n\n<li><code>ordering<\/code>: \u30ea\u30b9\u30c8\u30d3\u30e5\u30fc\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30bd\u30fc\u30c8\u9805\u76ee\u3092\u6307\u5b9a\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3057\u307e\u3059\u3002<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>class MyModelAdmin(admin.ModelAdmin):\n    list_display = ('title', 'author', 'pub_date')\n    list_filter = ('author', 'pub_date')\n    search_fields = ('title', 'author__username')\n    ordering = ('-pub_date',)\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"3\">\n<li>\u30d5\u30a9\u30fc\u30e0\u30d3\u30e5\u30fc\u3092\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3059\u308b<\/li>\n<\/ol>\n\n\n\n<p><code>ModelAdmin<\/code>&nbsp;FormView \u30af\u30e9\u30b9\u306b\u306f\u3001\u30e2\u30c7\u30eb\u306e\u30d5\u30a9\u30fc\u30e0 \u30d3\u30e5\u30fc\u3092\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3067\u304d\u308b\u30d7\u30ed\u30d1\u30c6\u30a3\u3068\u30e1\u30bd\u30c3\u30c9\u3082\u7528\u610f\u3055\u308c\u3066\u3044\u307e\u3059\u3002 \u4f8b\u3048\u3070\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>fields<\/code>&nbsp;\u307e\u305f\u306f : \u30d5\u30a9\u30fc\u30e0 \u30d3\u30e5\u30fc\u306b\u8868\u793a\u3055\u308c\u308b\u30d5\u30a3\u30fc\u30eb\u30c9\u3068\u30b0\u30eb\u30fc\u30d7\u3092\u6307\u5b9a\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3057\u307e\u3059\u3002<code>fieldsets<\/code><\/li>\n\n\n\n<li><code>readonly_fields<\/code>: \u30d5\u30a9\u30fc\u30e0 \u30d3\u30e5\u30fc\u3067\u8aad\u307f\u53d6\u308a\u5c02\u7528\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u6307\u5b9a\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li><code>exclude<\/code>: \u30d5\u30a9\u30fc\u30e0 \u30d3\u30e5\u30fc\u306b\u8868\u793a\u3055\u308c\u306a\u3044\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u6307\u5b9a\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li><code>form<\/code>: \u30e6\u30fc\u30b6\u30fc\u8a2d\u5b9a\u30d5\u30a9\u30fc\u30e0 \u30af\u30e9\u30b9\u3092\u6307\u5b9a\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li><code>save_model<\/code>&nbsp;\u304a\u3088\u3073 : \u4fdd\u5b58\u64cd\u4f5c\u3068\u524a\u9664\u64cd\u4f5c\u3092\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3057\u307e\u3059\u3002<code>delete_model<\/code><\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django import forms\n\nclass MyModelForm(forms.ModelForm):\n    # \u5728\u8fd9\u91cc\u81ea\u5b9a\u4e49\u8868\u5355\u5c5e\u6027\u548c\u65b9\u6cd5\n\nclass MyModelAdmin(admin.ModelAdmin):\n    form = MyModelForm\n    fields = ('title', 'author', 'pub_date', 'content')\n    readonly_fields = ('pub_date',)\n    exclude = ('slug',)\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"4\">\n<li>\u30ab\u30b9\u30bf\u30e0\u30a2\u30af\u30b7\u30e7\u30f3<\/li>\n<\/ol>\n\n\n\n<p><code>ModelAdmin<\/code>&nbsp;\u30af\u30e9\u30b9\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u30e2\u30c7\u30eb\u306e\u30ab\u30b9\u30bf\u30e0\u30a2\u30af\u30b7\u30e7\u30f3\u3092\u5b9a\u7fa9\u3067\u304d\u307e\u3059\u3002 \u30a2\u30af\u30b7\u30e7\u30f3\u306f\u3001\u9078\u629e\u3057\u305f\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306b\u4e00\u62ec\u3067\u9069\u7528\u3067\u304d\u308b\u6a5f\u80fd\u3067\u3059\u3002 \u4f8b\u3048\u3070\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>def set_published(modeladmin, request, queryset):\n    queryset.update(published=True)\nset_published.short_description = \"\u8bbe\u7f6e\u4e3a\u5df2\u53d1\u5e03\"\n\nclass MyModelAdmin(admin.ModelAdmin):\n    actions = [set_published]\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"5\">\n<li>\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3059\u308b<\/li>\n<\/ol>\n\n\n\n<p>\u7ba1\u7406\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3059\u308b\u306b\u306f\u3001Django \u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u4e0a\u66f8\u304d\u3057\u307e\u3059\u3002 \u7ba1\u7406\u8005\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306f\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u3042\u308a\u307e\u3059\u3002 \u65e2\u5b9a\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3059\u308b\u306b\u306f\u3001\u30a2\u30d7\u30ea\u307e\u305f\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<code>django\/contrib\/admin\/templates\/admin\/<\/code><code>templates<\/code><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1610\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u540c\u3058\u540d\u524d\u3068\u69cb\u9020\u306e\u30d5\u30a1\u30a4\u30eb\u3002 \u305f\u3068\u3048\u3070\u3001\u7ba1\u7406\u30c0\u30c3\u30b7\u30e5\u30dc\u30fc\u30c9\u306e\u30db\u30fc\u30e0\u30da\u30fc\u30b8\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3059\u308b\u306b\u306f\u3001 \u3068\u3044\u3046\u540d\u524d\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002 \u30ab\u30b9\u30bf\u30e0 \u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3067\u306f\u3001\u5fc5\u8981\u306b\u5fdc\u3058\u3066 HTML\u3001CSS\u3001\u304a\u3088\u3073 JavaScript \u30b3\u30fc\u30c9\u3092\u5909\u66f4\u3067\u304d\u307e\u3059\u3002<code>templates\/admin\/index.html<\/code><\/p>\n\n\n\n<p>\u4ee5\u4e0b\u306f\u3001\u30ab\u30b9\u30bf\u30e0\u7ba1\u7406\u30db\u30fc\u30e0\u30da\u30fc\u30b8\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u4f8b\u3067\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">htmlCopy code<code>{% extends \"admin\/base.html\" %}\n\n{% block title %}\u81ea\u5b9a\u4e49\u7ba1\u7406\u540e\u53f0\u9996\u9875{% endblock %}\n\n{% block content %}\n  &lt;h1&gt;\u6b22\u8fce\u6765\u5230\u81ea\u5b9a\u4e49\u7ba1\u7406\u540e\u53f0\uff01&lt;\/h1&gt;\n  &lt;!-- \u5728\u8fd9\u91cc\u6dfb\u52a0\u4f60\u7684\u81ea\u5b9a\u4e49\u5185\u5bb9 --&gt;\n{% endblock %}\n<\/code><\/pre>\n\n\n\n<p>Django \u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u7ba1\u7406\u30d0\u30c3\u30af\u30b0\u30e9\u30a6\u30f3\u30c9\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u7d99\u627f\u3057\u3066\u62e1\u5f35\u3059\u308b\u306b\u306f\u3001\u30bf\u30b0\u3092\u4f7f\u7528\u3057\u3001\u30ab\u30b9\u30bf\u30e0\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u9069\u5207\u306a\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306b\u914d\u7f6e\u3057\u3066\u304f\u3060\u3055\u3044\u3002<code>{% extends %}<\/code><code>{% block %}<\/code><\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"6\">\n<li>URL \u3068\u30d3\u30e5\u30fc\u3092\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3059\u308b<\/li>\n<\/ol>\n\n\n\n<p>\u3088\u308a\u9ad8\u5ea6\u306a\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u304c\u5fc5\u8981\u306a\u5834\u5408\u306f\u3001\u7ba1\u7406\u8005\u306e\u80cc\u666f\u306b\u30ab\u30b9\u30bf\u30e0 URL \u3068\u30d3\u30e5\u30fc\u3092\u8ffd\u52a0\u3067\u304d\u307e\u3059\u3002 \u3053\u308c\u3092\u884c\u3046\u306b\u306f\u3001\u307e\u305a\u65b0\u3057\u3044\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3057\u3001\u30ab\u30b9\u30bf\u30e0URL\u3068\u30d3\u30e5\u30fc\u3092\u5b9a\u7fa9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u6b21\u306b\u3001\u30af\u30e9\u30b9\u306e\u30e1\u30bd\u30c3\u30c9\u3092\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3057\u3066\u3001\u30ab\u30b9\u30bf\u30e0 URL \u3092\u65e2\u5b9a\u306e URL \u30d1\u30bf\u30fc\u30f3\u306b\u8ffd\u52a0\u3057\u307e\u3059\u3002 \u6700\u5f8c\u306b\u3001\u30ab\u30b9\u30bf\u30e0\u30d3\u30e5\u30fc\u95a2\u6570\u3092\u4f5c\u6210\u3057\u3001\u305d\u306e\u4e2d\u306b\u30ab\u30b9\u30bf\u30e0\u30ed\u30b8\u30c3\u30af\u3092\u5b9f\u88c5\u3057\u307e\u3059\u3002<code>urls.py<\/code><code>ModelAdmin<\/code><code>get_urls<\/code><\/p>\n\n\n\n<p>\u30ab\u30b9\u30bf\u30e0 URL \u3068\u30d3\u30e5\u30fc\u306e\u4f8b\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code># \u5728 admin.py \u6587\u4ef6\u4e2d\n\nfrom django.urls import path\nfrom django.shortcuts import render\n\nclass MyModelAdmin(admin.ModelAdmin):\n    # ...\n\n    def get_urls(self):\n        urls = super().get_urls()\n        custom_urls = [\n            path('my_view\/', self.admin_site.admin_view(self.my_view), name='my_view'),\n        ]\n        return custom_urls + urls\n\n    def my_view(self, request):\n        # \u5728\u8fd9\u91cc\u5b9e\u73b0\u4f60\u7684\u81ea\u5b9a\u4e49\u903b\u8f91\n        return render(request, 'admin\/my_view.html', {'title': 'My View'})\n\n# \u5728 my_view.html \u6587\u4ef6\u4e2d\n\n{% extends \"admin\/base.html\" %}\n\n{% block title %}\u81ea\u5b9a\u4e49\u89c6\u56fe{% endblock %}\n\n{% block content %}\n  &lt;h1&gt;{{ title }}&lt;\/h1&gt;\n  &lt;!-- \u5728\u8fd9\u91cc\u6dfb\u52a0\u4f60\u7684\u81ea\u5b9a\u4e49\u5185\u5bb9 --&gt;\n{% endblock %}\n<\/code><\/pre>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u30e1\u30bd\u30c3\u30c9\u3068\u624b\u6cd5\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30cb\u30fc\u30ba\u306b\u5408\u308f\u305b\u3066\u5fc5\u8981\u306b\u5fdc\u3058\u3066 Django \u7ba1\u7406\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u306e\u5916\u89b3\u3068\u52d5\u4f5c\u3092\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3067\u304d\u307e\u3059\u3002 \u7ba1\u7406\u8005\u3092\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3059\u308b\u3068\u3001\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\u3068\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u304c\u3088\u308a\u8907\u96d1\u306b\u306a\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b\u305f\u3081\u3001\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3059\u308b\u524d\u306b\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u6a5f\u80fd\u3092\u5b8c\u5168\u306b\u7406\u89e3\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1610\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>Django\u306e\u57fa\u672c\u7684\u306a\u30d3\u30e5\u30fc\u306e\u6982\u5ff5\u3092\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Django \u30d3\u30e5\u30fc\u306f\u3001Web \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30b3\u30a2\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u306e 1 \u3064\u3067\u3042\u308a\u3001\u30e6\u30fc\u30b6\u30fc\u8981\u6c42\u306e\u51e6\u7406\u3068\u5fdc\u7b54\u306e\u751f\u6210\u3092\u62c5\u5f53\u3057\u307e\u3059\u3002 Django \u3067\u306f\u3001\u30d3\u30e5\u30fc\u306f Python \u95a2\u6570\u307e\u305f\u306f\u30af\u30e9\u30b9\u306b\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u30d3\u30e5\u30fc\u306e\u57fa\u672c\u7684\u306a\u76ee\u7684\u306f\u3001Web \u8981\u6c42\u3092\u53d7\u4fe1\u3057\u3001Web \u5fdc\u7b54\u3092\u8fd4\u3059\u3053\u3068\u3067\u3059\u3002 Django \u30d3\u30e5\u30fc\u306b\u95a2\u3059\u308b\u57fa\u672c\u7684\u306a\u6982\u5ff5\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u6a5f\u80fd\u30d3\u30e5\u30fc<\/li>\n<\/ol>\n\n\n\n<p>\u95a2\u6570\u30d3\u30e5\u30fc\u306f\u3001\u6700\u3082\u5358\u7d14\u306a\u30bf\u30a4\u30d7\u306e\u30d3\u30e5\u30fc\u3067\u3059\u3002 \u95a2\u6570\u30d3\u30e5\u30fc\u306f\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3068\u3057\u3066\u53d7\u3051\u53d6\u308a\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u8fd4\u3057\u307e\u3059\u3002 \u4f8b\u3048\u3070\uff1a<code>HttpRequest<\/code><code>HttpResponse<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django.http import HttpResponse\n\ndef my_view(request):\n    return HttpResponse(\"Hello, World!\")\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\">\n<li>\u30af\u30e9\u30b9\u30d3\u30e5\u30fc<\/li>\n<\/ol>\n\n\n\n<p>\u30af\u30e9\u30b9 \u30d3\u30e5\u30fc\u306f\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u6307\u5411\u306e\u30a2\u30d7\u30ed\u30fc\u30c1\u3092\u4f7f\u7528\u3057\u3066\u30b3\u30fc\u30c9\u3092\u6574\u7406\u304a\u3088\u3073\u518d\u5229\u7528\u3067\u304d\u308b\u3001\u3088\u308a\u9ad8\u5ea6\u306a\u7a2e\u985e\u306e\u30d3\u30e5\u30fc\u3067\u3059\u3002 \u30af\u30e9\u30b9 \u30d3\u30e5\u30fc\u306f\u57fa\u672c\u30af\u30e9\u30b9\u304b\u3089\u7d99\u627f\u3057\u3001 \u306a\u3069\u306e\u7279\u5b9a\u306e HTTP \u30e1\u30bd\u30c3\u30c9\u3092\u5b9f\u88c5\u3057\u307e\u3059\u3002 \u4f8b\u3048\u3070\uff1a<code>django.views.View<\/code><code>get<\/code><code>post<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django.http import HttpResponse\nfrom django.views import View\n\nclass MyView(View):\n    def get(self, request):\n        return HttpResponse(\"Hello, World!\")\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"3\">\n<li>URL \u30b3\u30f3\u30d5\u30a3\u30ae\u30e5\u30ec\u30fc\u30b7\u30e7\u30f3<\/li>\n<\/ol>\n\n\n\n<p>\u30d3\u30e5\u30fc\u3092\u7279\u5b9a\u306e URL \u306b\u95a2\u9023\u4ed8\u3051\u308b\u306b\u306f\u3001\u30a2\u30d7\u30ea\u306e\u30d5\u30a1\u30a4\u30eb\u3067 URL \u69cb\u6210\u3092\u5b9a\u7fa9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 URL \u69cb\u6210\u3067\u306f\u3001\u6b63\u898f\u8868\u73fe\u307e\u305f\u306f\u30d1\u30b9 \u30b3\u30f3\u30d0\u30fc\u30bf\u30fc\u3092\u4f7f\u7528\u3057\u3066\u3001\u8981\u6c42\u3055\u308c\u305f URL \u3092\u7167\u5408\u3057\u3001\u9069\u5207\u306a\u30d3\u30e5\u30fc\u95a2\u6570\u307e\u305f\u306f\u30af\u30e9\u30b9\u306b\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u3057\u307e\u3059\u3002 \u4f8b\u3048\u3070\uff1a<code>urls.py<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django.urls import path\nfrom . import views\n\nurlpatterns = [\n    path('my_view\/', views.my_view),\n    path('my_class_view\/', views.MyView.as_view()),\n]\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"4\">\n<li>\u8981\u6c42\u30aa\u30d6\u30b8\u30a7\u30af\u30c8<\/li>\n<\/ol>\n\n\n\n<p><code>HttpRequest<\/code>&nbsp;\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306b\u306f\u3001\u8981\u6c42\u30e1\u30bd\u30c3\u30c9 (GET\u3001POST \u306a\u3069)\u3001\u8981\u6c42\u30d8\u30c3\u30c0\u30fc\u3001URL \u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3001POST \u30c7\u30fc\u30bf\u306a\u3069\u3001\u30e6\u30fc\u30b6\u30fc\u306e\u8981\u6c42\u306b\u95a2\u3059\u308b\u3059\u3079\u3066\u306e\u60c5\u5831\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002 \u30d3\u30e5\u30fc\u3067\u306f\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u30d7\u30ed\u30d1\u30c6\u30a3\u3068\u30e1\u30bd\u30c3\u30c9\u306b\u30a2\u30af\u30bb\u30b9\u3057\u3066\u3053\u306e\u60c5\u5831\u3092\u53d6\u5f97\u3057\u3001\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u64cd\u4f5c\u3067\u304d\u307e\u3059\u3002<code>HttpRequest<\/code><\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"5\">\n<li>\u5fdc\u7b54\u30aa\u30d6\u30b8\u30a7\u30af\u30c8<\/li>\n<\/ol>\n\n\n\n<p><code>HttpResponse<\/code>&nbsp;\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306f\u3001Web \u30b5\u30fc\u30d0\u30fc\u304c\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306b\u9001\u4fe1\u3059\u308b\u5fdc\u7b54\u3092\u8868\u3057\u307e\u3059\u3002 \u5fdc\u7b54\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306b\u306f\u3001\u72b6\u614b\u30b3\u30fc\u30c9 (200\u3001404 \u306a\u3069)\u3001\u5fdc\u7b54\u30d8\u30c3\u30c0\u30fc\u3001\u304a\u3088\u3073\u5fdc\u7b54\u672c\u6587\u304c\u542b\u307e\u308c\u307e\u3059\u3002 \u30d3\u30e5\u30fc\u3067\u306f\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3057\u3001\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u305d\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u3068\u30d7\u30ed\u30d1\u30c6\u30a3\u3092\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<code>HttpResponse<\/code><\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"6\">\n<li>\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0<\/li>\n<\/ol>\n\n\n\n<p>\u591a\u304f\u306e\u5834\u5408\u3001\u30d3\u30e5\u30fc\u306f\u30e6\u30fc\u30b6\u30fc\u306e\u8981\u6c42\u306b\u57fa\u3065\u3044\u3066\u52d5\u7684 HTML \u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u751f\u6210\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u3053\u308c\u3092\u5b9f\u73fe\u3059\u308b\u305f\u3081\u306b\u3001Django\u306f\u5f37\u529b\u306a\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30b7\u30b9\u30c6\u30e0\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002 \u30d3\u30e5\u30fc\u3067\u306f\u3001\u95a2\u6570\u3092\u4f7f\u7528\u3057\u3066\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3068\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8 \u30c7\u30a3\u30af\u30b7\u30e7\u30ca\u30ea\u3092\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3068\u3057\u3066\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u3067\u304d\u307e\u3059\u3002 \u4f8b\u3048\u3070\uff1a<code>render<\/code><code>HttpResponse<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django.shortcuts import render\n\ndef my_view(request):\n    context = {'message': 'Hello, World!'}\n    return render(request, 'my_template.html', context)\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"7\">\n<li>\u30d3\u30e5\u30fc\u30c7\u30b3\u30ec\u30fc\u30bf<\/li>\n<\/ol>\n\n\n\n<p>\u30c7\u30b3\u30ec\u30fc\u30bf\u306f\u3001\u95a2\u6570\u307e\u305f\u306f\u30af\u30e9\u30b9\u306e\u52d5\u4f5c\u3092\u5909\u66f4\u3059\u308b\u305f\u3081\u306e\u9ad8\u5ea6\u306aPython\u6a5f\u80fd\u3067\u3059\u3002 Django \u3067\u306f\u3001\u30c7\u30b3\u30ec\u30fc\u30bf\u3092\u4f7f\u7528\u3057\u3066\u3001\u30d3\u30e5\u30fc\u3084\u30ad\u30e3\u30c3\u30b7\u30e5\u30dd\u30ea\u30b7\u30fc\u306a\u3069\u306e\u30a2\u30af\u30bb\u30b9\u5236\u5fa1\u3092\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3067\u304d\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u30d3\u30e5\u30fc\u3092\u4f5c\u6210\u3059\u308b\u306b\u306f<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1610\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u8a8d\u8a3c\u3055\u308c\u305f\u30e6\u30fc\u30b6\u30fc\u306e\u307f\u304c\u4f7f\u7528\u3067\u304d\u3001\u30c7\u30b3\u30ec\u30fc\u30bf\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002<code>login_required<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django.contrib.auth.decorators import login_required\nfrom django.http import HttpResponse\n\n@login_required\ndef my_view(request):\n    return HttpResponse(\"Hello, Authenticated User!\")\n<\/code><\/pre>\n\n\n\n<p>\u30af\u30e9\u30b9 \u30d3\u30e5\u30fc\u3067\u306f\u3001\u30c7\u30b3\u30ec\u30fc\u30bf\u3092\u4f7f\u7528\u3057\u3066\u30c7\u30b3\u30ec\u30fc\u30bf\u3092\u9069\u7528\u3067\u304d\u307e\u3059\u3002<code>method_decorator<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django.contrib.auth.decorators import login_required\nfrom django.utils.decorators import method_decorator\nfrom django.http import HttpResponse\nfrom django.views import View\n\n@method_decorator(login_required, name='dispatch')\nclass MyView(View):\n    def get(self, request):\n        return HttpResponse(\"Hello, Authenticated User!\")\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"8\">\n<li>\u30ea\u30c0\u30a4\u30ec\u30af\u30c8<\/li>\n<\/ol>\n\n\n\n<p>\u5834\u5408\u306b\u3088\u3063\u3066\u306f\u3001\u30d3\u30e5\u30fc\u3067\u30e6\u30fc\u30b6\u30fc\u3092\u5225\u306e URL \u306b\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u3053\u308c\u3092\u5b9f\u73fe\u3059\u308b\u306b\u306f\u3001\u95a2\u6570\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002 \u3053\u306e\u95a2\u6570\u306f URL \u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u53d7\u3051\u53d6\u308a\u3001302 \u72b6\u614b\u30b3\u30fc\u30c9\u3092\u6301\u3064\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u8fd4\u3057\u307e\u3059\u3002 \u4f8b\u3048\u3070\uff1a<code>redirect<\/code><code>redirect<\/code><code>HttpResponseRedirect<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django.shortcuts import redirect\n\ndef my_view(request):\n    # \u5728\u8fd9\u91cc\u6267\u884c\u4e00\u4e9b\u64cd\u4f5c\n    return redirect('\/another_view\/')\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"9\">\n<li>\u30a8\u30e9\u30fc\u51e6\u7406<\/li>\n<\/ol>\n\n\n\n<p>Django \u306b\u306f\u3001 \u3084 \u306a\u3069\u306e\u7d44\u307f\u8fbc\u307f\u30a8\u30e9\u30fc\u51e6\u7406\u30d3\u30e5\u30fc\u304c\u7528\u610f\u3055\u308c\u3066\u3044\u307e\u3059\u3002 \u3053\u308c\u3089\u306e\u30d3\u30e5\u30fc\u306f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30d5\u30a1\u30a4\u30eb\u3067\u5909\u6570\u3092\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3067\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3067\u304d\u307e\u3059\u3002 \u3055\u3089\u306b\u3001\u307e\u305f\u306f\u3092\u4f7f\u7528\u3057\u3066\u3001\u30d3\u30e5\u30fc\u3067\u30a8\u30e9\u30fc\u3092\u660e\u793a\u7684\u306b\u30c8\u30ea\u30ac\u30fc\u3067\u304d\u307e\u3059\u3002<code>404 Not Found<\/code><code>500 Internal Server Error<\/code><code>urls.py<\/code><code>handler404<\/code><code>handler500<\/code><code>raise Http404<\/code><code>raise HttpResponseServerError<\/code><\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"10\">\n<li>\u30da\u30fc\u30b8\u30cd\u30fc\u30b7\u30e7\u30f3<\/li>\n<\/ol>\n\n\n\n<p>\u5927\u91cf\u306e\u30c7\u30fc\u30bf\u3092\u6271\u3046\u5834\u5408\u3001\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3068\u30e6\u30fc\u30b6\u30fc \u30a8\u30af\u30b9\u30da\u30ea\u30a8\u30f3\u30b9\u3092\u5411\u4e0a\u3055\u305b\u308b\u305f\u3081\u306b\u3001\u7d50\u679c\u3092\u6539\u30da\u30fc\u30b8\u8abf\u6574\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3053\u3068\u304c\u3088\u304f\u3042\u308a\u307e\u3059\u3002 Django \u306b\u306f\u3001\u30da\u30fc\u30b8\u30cd\u30fc\u30b7\u30e7\u30f3\u3092\u7c21\u5358\u306b\u5b9f\u88c5\u3059\u308b\u306e\u306b\u5f79\u7acb\u3064\u30af\u30e9\u30b9\u304c\u7528\u610f\u3055\u308c\u3066\u3044\u307e\u3059\u3002 \u30d3\u30e5\u30fc\u3067\u306f\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3057\u3001\u305d\u308c\u3092\u30c7\u30fc\u30bf \u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u306b\u95a2\u9023\u4ed8\u3051\u3066\u3001\u8981\u6c42\u3055\u308c\u305f\u30da\u30fc\u30b8\u756a\u53f7\u306b\u57fa\u3065\u3044\u3066\u5fdc\u7b54\u3092\u751f\u6210\u3067\u304d\u307e\u3059\u3002 \u4f8b\u3048\u3070\uff1a<code>Paginator<\/code><code>Paginator<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django.core.paginator import Paginator\nfrom django.shortcuts import render\nfrom .models import MyModel\n\ndef my_view(request):\n    page = request.GET.get('page', 1)\n    paginator = Paginator(MyModel.objects.all(), 25)  # \u6bcf\u9875\u663e\u793a 25 \u6761\u8bb0\u5f55\n    items = paginator.get_page(page)\n    return render(request, 'my_template.html', {'items': items})\n<\/code><\/pre>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u57fa\u672c\u6982\u5ff5\u3092\u7406\u89e3\u3057\u3066\u9069\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u6a5f\u80fd\u304c\u8c4a\u5bcc\u3067\u4fdd\u5b88\u3057\u3084\u3059\u3044 Django \u30d3\u30e5\u30fc\u3092\u4f5c\u6210\u3067\u304d\u307e\u3059\u3002 \u30d3\u30e5\u30fc\u306fDjango Web\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30b3\u30a2\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3067\u3042\u308b\u305f\u3081\u3001\u30d3\u30e5\u30fc\u306e\u4ed5\u7d44\u307f\u3068\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u3092\u7406\u89e3\u3059\u308b\u3053\u3068\u306f\u3001\u9ad8\u54c1\u8cea\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u69cb\u7bc9\u3059\u308b\u305f\u3081\u306b\u91cd\u8981\u3067\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1610\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>\u30d3\u30e5\u30fc\u306e\u4f5c\u6210\u65b9\u6cd5\u3092\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u30d3\u30e5\u30fc\u306e\u4f5c\u6210\u306f\u3001Django Web \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u958b\u767a\u306b\u304a\u3051\u308b\u91cd\u8981\u306a\u30b9\u30c6\u30c3\u30d7\u3067\u3059\u3002 \u30d3\u30e5\u30fc\u3092\u4f5c\u6210\u304a\u3088\u3073\u69cb\u6210\u3059\u308b\u65b9\u6cd5\u306e\u8a73\u7d30\u306a\u624b\u9806\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30d3\u30e5\u30fc\u95a2\u6570\u307e\u305f\u306f\u30d3\u30e5\u30fc\u30af\u30e9\u30b9\u3092\u4f5c\u6210\u3059\u308b<\/li>\n<\/ol>\n\n\n\n<p>\u307e\u305a\u3001\u30a2\u30d7\u30ea\u306e\u30d5\u30a1\u30a4\u30eb\u3067\u30d3\u30e5\u30fc\u95a2\u6570\u307e\u305f\u306f\u30af\u30e9\u30b9\u3092\u5b9a\u7fa9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 view \u95a2\u6570\u306f\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3068\u3057\u3066\u53d7\u3051\u53d6\u308a\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u8fd4\u3057\u307e\u3059\u3002 \u30af\u30e9\u30b9 \u30d3\u30e5\u30fc\u306f\u57fa\u672c\u30af\u30e9\u30b9\u304b\u3089\u7d99\u627f\u3057\u3001 \u306a\u3069\u306e\u7279\u5b9a\u306e HTTP \u30e1\u30bd\u30c3\u30c9\u3092\u5b9f\u88c5\u3057\u307e\u3059\u3002<code>views.py<\/code><code>HttpRequest<\/code><code>HttpResponse<\/code><code>django.views.View<\/code><code>get<\/code><code>post<\/code><\/p>\n\n\n\n<p>\u5358\u7d14\u306a\u95a2\u6570\u30d3\u30e5\u30fc\u306e\u4f8b\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django.http import HttpResponse\n\ndef my_view(request):\n    return HttpResponse(\"Hello, World!\")\n<\/code><\/pre>\n\n\n\n<p>\u30af\u30e9\u30b9 \u30d3\u30e5\u30fc\u306e\u7c21\u5358\u306a\u4f8b\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django.http import HttpResponse\nfrom django.views import View\n\nclass MyView(View):\n    def get(self, request):\n        return HttpResponse(\"Hello, World!\")\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\">\n<li>URL \u3092\u69cb\u6210\u3059\u308b<\/li>\n<\/ol>\n\n\n\n<p>\u30d3\u30e5\u30fc\u3092\u7279\u5b9a\u306e URL \u306b\u95a2\u9023\u4ed8\u3051\u308b\u306b\u306f\u3001\u30a2\u30d7\u30ea\u306e\u30d5\u30a1\u30a4\u30eb\u3067 URL \u69cb\u6210\u3092\u5b9a\u7fa9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 URL \u69cb\u6210\u3067\u306f\u3001\u6b63\u898f\u8868\u73fe\u307e\u305f\u306f\u30d1\u30b9\u5909\u63db\u6a5f\u80fd\u3092\u4f7f\u7528\u3057\u3066\u3001\u8981\u6c42\u3055\u308c\u305f URL \u3092\u7167\u5408\u3057\u3001\u9069\u5207\u306a\u30d3\u30e5\u30fc\u95a2\u6570\u307e\u305f\u306f\u30af\u30e9\u30b9\u306b\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u3057\u307e\u3059\u3002 URL \u3092\u8a2d\u5b9a\u3059\u308b\u306b\u306f\u3001\u307e\u305a\u30a4\u30f3\u30dd\u30fc\u30c8\u6a5f\u80fd\u304b\u3089\u30a4\u30f3\u30dd\u30fc\u30c8\u3057\u3066\u304b\u3089\u3001\u30ea\u30b9\u30c8\u306b\u65b0\u3057\u3044\u30a8\u30f3\u30c8\u30ea\u3092\u8ffd\u52a0\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<code>urls.py<\/code><code>django.urls<\/code><code>path<\/code><code>urlpatterns<\/code><\/p>\n\n\n\n<p>\u95a2\u6570\u30d3\u30e5\u30fc\u306e URL \u69cb\u6210\u306e\u4f8b\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django.urls import path\nfrom . import views\n\nurlpatterns = [\n    path('my_view\/', views.my_view),\n]\n<\/code><\/pre>\n\n\n\n<p>\u30af\u30e9\u30b9 \u30d3\u30e5\u30fc\u306e URL \u69cb\u6210\u306e\u4f8b\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django.urls import path\nfrom . import views\n\nurlpatterns = [\n    path('my_class_view\/', views.MyView.as_view()),\n]\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"3\">\n<li>\u30c6\u30b9\u30c8\u30d3\u30e5\u30fc<\/li>\n<\/ol>\n\n\n\n<p>\u30d3\u30e5\u30fc\u3092\u4f5c\u6210\u3057\u3066\u69cb\u6210\u3057\u305f\u3089\u3001Django \u958b\u767a\u30b5\u30fc\u30d0\u30fc\u3092\u5b9f\u884c\u3057\u3001\u9069\u5207\u306a URL \u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u3053\u3068\u3067\u3001\u30d3\u30e5\u30fc\u3092\u30c6\u30b9\u30c8\u3067\u304d\u307e\u3059\u3002 \u3059\u3079\u3066\u304c\u554f\u984c\u306a\u3044\u3088\u3046\u306b\u898b\u3048\u308b\u5834\u5408\u306f\u3001\u30d3\u30e5\u30fc\u306b\u3088\u3063\u3066\u751f\u6210\u3055\u308c\u305f\u5fdc\u7b54\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u4e0a\u8a18\u306e\u4f8b\u3067\u306f\u3001\u307e\u305f\u306f \u306b\u30a2\u30af\u30bb\u30b9\u3057\u3066\u30d3\u30e5\u30fc\u3092\u30c6\u30b9\u30c8\u3067\u304d\u307e\u3059\u3002<code>http:\/\/localhost:8000\/my_view\/<\/code><code>http:\/\/localhost:8000\/my_class_view\/<\/code><\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"4\">\n<li>\u30d3\u30e5\u30fc\u6a5f\u80fd\u306e\u62e1\u5f35<\/li>\n<\/ol>\n\n\n\n<p>\u57fa\u672c\u30d3\u30e5\u30fc\u3092\u4f5c\u6210\u3057\u305f\u3089\u3001\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u6a5f\u80fd\u3092\u8ffd\u52a0\u3067\u304d\u307e\u3059\u3002 \u3053\u308c\u306b\u306f\u3001\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u3001\u30d5\u30a9\u30fc\u30e0\u51e6\u7406\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9 \u30af\u30a8\u30ea\u306a\u3069\u304c\u542b\u307e\u308c\u307e\u3059\u3002 \u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u4f7f\u7528\u3057\u3066\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u3055\u308c\u305f\u95a2\u6570\u30d3\u30e5\u30fc\u306e\u4f8b\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django.shortcuts import render\n\ndef my_view(request):\n    context = {'message': 'Hello, World!'}\n    return render(request, 'my_template.html', context)\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"5\">\n<li>\u30d3\u30e5\u30fc\u30c7\u30b3\u30ec\u30fc\u30bf\u3092\u4f7f\u7528\u3059\u308b<\/li>\n<\/ol>\n\n\n\n<p>\u5834\u5408\u306b\u3088\u3063\u3066\u306f\u3001\u30c7\u30b3\u30ec\u30fc\u30bf\u3092\u4f7f\u7528\u3057\u3066\u30d3\u30e5\u30fc\u306e\u52d5\u4f5c\u3092\u5909\u66f4\u307e\u305f\u306f\u62e1\u5f35\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u30c7\u30b3\u30ec\u30fc\u30bf\u3092\u4f7f\u7528\u3057\u3066\u3001\u30a2\u30af\u30bb\u30b9\u5236\u5fa1\u3001\u30ad\u30e3\u30c3\u30b7\u30e5\u306a\u3069\u306e\u6a5f\u80fd\u3092\u5b9f\u88c5\u3067\u304d\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u8a8d\u8a3c\u3055\u308c\u305f\u30e6\u30fc\u30b6\u30fc\u306e\u307f\u304c\u30d3\u30e5\u30fc\u3092\u4f7f\u7528\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b\u306b\u306f\u3001\u30c7\u30b3\u30ec\u30fc\u30bf\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002<code>login_required<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django.contrib.auth.decorators import login_required\nfrom django.http import HttpResponse\n\n@login_required\ndef my_view(request):\n    return HttpResponse(\"Hello, Authenticated User!\")\n<\/code><\/pre>\n\n\n\n<p>\u4ee5\u4e0b\u3067<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1610\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u624b\u9806\u3092 Django \u306e\u4ed6\u306e\u6a5f\u80fd\u3068\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067\u3001\u3055\u307e\u3056\u307e\u306a\u30cb\u30fc\u30ba\u3092\u6e80\u305f\u3059\u305f\u3081\u306b\u3001\u3088\u308a\u8907\u96d1\u306a\u30d3\u30e5\u30fc\u3092\u4f5c\u6210\u3067\u304d\u307e\u3059\u3002 \u30d3\u30e5\u30fc\u306e\u6a5f\u80fd\u3092\u3055\u3089\u306b\u62e1\u5f35\u3059\u308b\u65b9\u6cd5\u3092\u3044\u304f\u3064\u304b\u7d39\u4ecb\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"6\">\n<li>\u30d5\u30a9\u30fc\u30e0\u3092\u51e6\u7406\u3059\u308b<\/li>\n<\/ol>\n\n\n\n<p>\u30d3\u30e5\u30fc\u3067\u306f\u3001\u30e6\u30fc\u30b6\u30fc\u304c\u9001\u4fe1\u3057\u305f\u30d5\u30a9\u30fc\u30e0 \u30c7\u30fc\u30bf\u3092\u64cd\u4f5c\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u3053\u308c\u3092\u884c\u3046\u306b\u306f\u3001Django\u306e\u30d5\u30a9\u30fc\u30e0\u30b7\u30b9\u30c6\u30e0\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002 \u307e\u305a\u3001\u30d5\u30a1\u30a4\u30eb\u306b\u30d5\u30a9\u30fc\u30e0\u30af\u30e9\u30b9\u3092\u4f5c\u6210\u3057\u3001\u305d\u308c\u3092\u30d3\u30e5\u30fc\u3067\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5316\u3057\u3066\u51e6\u7406\u3057\u307e\u3059\u3002 \u6b21\u306b\u7c21\u5358\u306a\u4f8b\u3092\u793a\u3057\u307e\u3059\u3002<code>forms.py<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code># forms.py\nfrom django import forms\n\nclass MyForm(forms.Form):\n    name = forms.CharField(label='Your name', max_length=100)\n\n# views.py\nfrom django.http import HttpResponseRedirect\nfrom django.shortcuts import render\nfrom .forms import MyForm\n\ndef my_view(request):\n    if request.method == 'POST':\n        form = MyForm(request.POST)\n        if form.is_valid():\n            # \u5728\u8fd9\u91cc\u5904\u7406\u8868\u5355\u6570\u636e\n            return HttpResponseRedirect('\/success\/')\n    else:\n        form = MyForm()\n    return render(request, 'my_template.html', {'form': form})\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"7\">\n<li>\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30af\u30a8\u30ea<\/li>\n<\/ol>\n\n\n\n<p>\u30d3\u30e5\u30fc\u306f\u3001\u591a\u304f\u306e\u5834\u5408\u3001\u30c7\u30fc\u30bf\u306e\u30af\u30a8\u30ea\u3001\u65b0\u3057\u3044\u30ec\u30b3\u30fc\u30c9\u306e\u4f5c\u6210\u306a\u3069\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3068\u5bfe\u8a71\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u3053\u308c\u3092\u884c\u3046\u306b\u306f\u3001Django\u306eORM(\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30ea\u30ec\u30fc\u30b7\u30e7\u30ca\u30eb\u30de\u30c3\u30d4\u30f3\u30b0)\u30b7\u30b9\u30c6\u30e0\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002 \u6b21\u306b\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u30af\u30a8\u30ea\u3057\u3001\u7d50\u679c\u3092\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306b\u8868\u793a\u3059\u308b\u4f8b\u3092\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django.shortcuts import render\nfrom .models import MyModel\n\ndef my_view(request):\n    items = MyModel.objects.filter(published=True)\n    return render(request, 'my_template.html', {'items': items})\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"8\">\n<li>\u30da\u30fc\u30b8\u30cd\u30fc\u30b7\u30e7\u30f3\u3092\u4f7f\u7528\u3059\u308b<\/li>\n<\/ol>\n\n\n\n<p>\u6539\u30da\u30fc\u30b8\u4f4d\u7f6e\u306e\u81ea\u52d5\u4fee\u6b63\u306b\u3088\u308a\u3001\u5927\u91cf\u306e\u30c7\u30fc\u30bf\u3092\u6271\u3046\u3068\u304d\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3068\u30e6\u30fc\u30b6\u30fc \u30a8\u30af\u30b9\u30da\u30ea\u30a8\u30f3\u30b9\u3092\u5411\u4e0a\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 Django \u306b\u306f\u3001\u30da\u30fc\u30b8\u30cd\u30fc\u30b7\u30e7\u30f3\u3092\u7c21\u5358\u306b\u5b9f\u88c5\u3059\u308b\u306e\u306b\u5f79\u7acb\u3064\u30af\u30e9\u30b9\u304c\u7528\u610f\u3055\u308c\u3066\u3044\u307e\u3059\u3002 \u30d3\u30e5\u30fc\u3067\u6539\u30da\u30fc\u30b8\u4f4d\u7f6e\u306e\u81ea\u52d5\u4fee\u6b63\u3092\u4f7f\u7528\u3059\u308b\u4f8b\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<code>Paginator<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django.core.paginator import Paginator\nfrom django.shortcuts import render\nfrom .models import MyModel\n\ndef my_view(request):\n    page = request.GET.get('page', 1)\n    paginator = Paginator(MyModel.objects.all(), 25)  # \u6bcf\u9875\u663e\u793a 25 \u6761\u8bb0\u5f55\n    items = paginator.get_page(page)\n    return render(request, 'my_template.html', {'items': items})\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"9\">\n<li>AJAX \u8981\u6c42\u3092\u51e6\u7406\u3059\u308b<\/li>\n<\/ol>\n\n\n\n<p>\u6700\u65b0\u306e Web \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u69cb\u7bc9\u3059\u308b\u5834\u5408\u3001\u52d5\u7684\u30b3\u30f3\u30c6\u30f3\u30c4\u306e\u8aad\u307f\u8fbc\u307f\u3068\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u66f4\u65b0\u306e\u305f\u3081\u306e AJAX \u8981\u6c42\u3092\u51e6\u7406\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002 AJAX \u8981\u6c42\u3092\u51e6\u7406\u3059\u308b\u306b\u306f\u3001\u30d3\u30e5\u30fc\u3067\u8981\u6c42\u306e\u7a2e\u985e\u3092\u8abf\u3079\u3001\u5fc5\u8981\u306b\u5fdc\u3058\u3066 JSON \u30c7\u30fc\u30bf\u3092\u8fd4\u3057\u307e\u3059\u3002 \u4f8b\u3048\u3070\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django.http import JsonResponse\nfrom django.views.decorators.csrf import csrf_exempt\n\n@csrf_exempt\ndef my_view(request):\n    if request.is_ajax() and request.method == 'POST':\n        data = {'message': 'Hello, World!'}\n        return JsonResponse(data)\n    else:\n        return HttpResponse(\"Invalid request\")\n<\/code><\/pre>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u30a2\u30d7\u30ed\u30fc\u30c1\u3092 Django \u306e\u4ed6\u306e\u6a5f\u80fd\u3068\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067\u3001\u3055\u307e\u3056\u307e\u306a Web \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30cb\u30fc\u30ba\u3092\u6e80\u305f\u3059\u3001\u6a5f\u80fd\u304c\u8c4a\u5bcc\u3067\u9ad8\u5ea6\u306b\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u53ef\u80fd\u306a\u30d3\u30e5\u30fc\u3092\u69cb\u7bc9\u3067\u304d\u307e\u3059\u3002 \u3053\u308c\u3089\u306e\u6982\u5ff5\u3092\u7d99\u7d9a\u7684\u306b\u5b66\u7fd2\u3057\u3001\u5b9f\u969b\u306b\u9069\u7528\u3059\u308b\u3053\u3068\u3067\u3001Django \u30d3\u30e5\u30fc\u306e\u4f5c\u6210\u3068\u7ba1\u7406\u3092\u3088\u308a\u3088\u304f\u7406\u89e3\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1610\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>URL\u306e\u8a2d\u5b9a\u65b9\u6cd5\u3092\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Django \u3067\u306f\u3001URL \u69cb\u6210\u306f\u7279\u5b9a\u306e URL \u3092\u30d3\u30e5\u30fc\u306b\u95a2\u9023\u4ed8\u3051\u308b\u30d7\u30ed\u30bb\u30b9\u3067\u3059\u3002 \u3053\u308c\u3092\u5b9f\u73fe\u3059\u308b\u306b\u306f\u3001URL \u30d1\u30bf\u30fc\u30f3\u3068\u30d3\u30e5\u30fc\u306e\u9593\u306e\u30de\u30c3\u30d4\u30f3\u30b0\u95a2\u4fc2\u306e\u30ea\u30b9\u30c8\u3067\u3042\u308b \u3068\u3044\u3046\u540d\u524d\u306e\u5909\u6570\u3092\u542b\u3080\u30d5\u30a1\u30a4\u30eb\u3092\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u5404\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u5b9a\u7fa9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u8a73\u7d30\u306a URL \u69cb\u6210\u30d7\u30ed\u30bb\u30b9\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<code>urls.py<\/code><code>urlpatterns<\/code><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30a2\u30d7\u30ea\u3067\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3059\u308b<code>urls.py<\/code><\/li>\n<\/ol>\n\n\n\n<p>Django \u30a2\u30d7\u30ea\u3054\u3068\u306b\u3001\u30a2\u30d7\u30ea\u306e\u30eb\u30fc\u30c8\u306b\u540d\u524d\u306e\u4ed8\u3044\u305f\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u30d5\u30a1\u30a4\u30eb\u304c\u5b58\u5728\u3057\u306a\u3044\u5834\u5408\u306f\u3001\u624b\u52d5\u3067\u4f5c\u6210\u3067\u304d\u307e\u3059\u3002<code>urls.py<\/code><\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\">\n<li>\u4f9d\u5b58\u95a2\u4fc2\u306e\u30a4\u30f3\u30dd\u30fc\u30c8<\/li>\n<\/ol>\n\n\n\n<p>\u30d5\u30a1\u30a4\u30eb\u306e\u5148\u982d\u3067\u3001\u3044\u304f\u3064\u304b\u306e\u4f9d\u5b58\u95a2\u4fc2\u3092\u30a4\u30f3\u30dd\u30fc\u30c8\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u901a\u5e38\u3001\u6587\u5b57\u5217\u3068\u6b63\u898f\u8868\u73fe\u306b\u57fa\u3065\u3044\u3066URL\u30d1\u30bf\u30fc\u30f3\u3092\u5b9a\u7fa9\u3059\u308band\/or\u95a2\u6570\u3092\u30a4\u30f3\u30dd\u30fc\u30c8\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u307e\u305f\u3001\u3053\u308c\u3089\u306e URL \u306b\u95a2\u9023\u4ed8\u3051\u3089\u308c\u3066\u3044\u308b\u30d3\u30e5\u30fc\u3092\u30a4\u30f3\u30dd\u30fc\u30c8\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<code>urls.py<\/code><code>path<\/code><code>re_path<\/code><\/p>\n\n\n\n<p>\u4f8b\u3048\u3070\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django.urls import path\nfrom . import views\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"3\">\n<li>URL \u30d1\u30bf\u30fc\u30f3\u306e\u5b9a\u7fa9<\/li>\n<\/ol>\n\n\n\n<p>\u6b21\u306b\u3001URL \u30d1\u30bf\u30fc\u30f3\u3068\u30d3\u30e5\u30fc\u306e\u9593\u306e\u30de\u30c3\u30d4\u30f3\u30b0\u3092\u542b\u3080\u30ea\u30b9\u30c8\u3067\u3042\u308b\u3001\u30d5\u30a1\u30a4\u30eb\u5185\u306e \u3068\u3044\u3046\u540d\u524d\u306e\u5909\u6570\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002 \u5404\u30a8\u30f3\u30c8\u30ea\u306f OR \u95a2\u6570\u3092\u4f7f\u7528\u3057\u3066\u4f5c\u6210\u3055\u308c\u3001\u6700\u521d\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306f URL \u30d1\u30bf\u30fc\u30f3\u3067\u30012 \u756a\u76ee\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306f\u95a2\u9023\u4ed8\u3051\u3089\u308c\u305f\u30d3\u30e5\u30fc\u3067\u3059\u3002<code>urls.py<\/code><code>urlpatterns<\/code><code>path<\/code><code>re_path<\/code><\/p>\n\n\n\n<p>\u4f8b\u3048\u3070\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>urlpatterns = [\n    path('my_view\/', views.my_view),\n    path('my_class_view\/', views.MyView.as_view()),\n]\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"4\">\n<li>\u30a2\u30d7\u30ea\u306e URL \u69cb\u6210\u3092\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u542b\u3081\u308b<code>urls.py<\/code><\/li>\n<\/ol>\n\n\n\n<p>\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u3001Django \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306f\u30d5\u30a1\u30a4\u30eb\u5185\u306e name \u5909\u6570\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002 \u30a2\u30d7\u30ea\u306e URL \u69cb\u6210\u3092\u542b\u3081\u308b\u306b\u306f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30d5\u30a1\u30a4\u30eb\u306b\u95a2\u6570\u3092\u30a4\u30f3\u30dd\u30fc\u30c8\u3057\u3001\u30ea\u30b9\u30c8\u306b\u65b0\u3057\u3044\u30a8\u30f3\u30c8\u30ea\u3092\u8ffd\u52a0\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<code>urls.py<\/code><code>urlpatterns<\/code><code>urls.py<\/code><code>include<\/code><code>urlpatterns<\/code><\/p>\n\n\n\n<p>\u4f8b\u3048\u3070\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django.contrib import admin\nfrom django.urls import path, include\n\nurlpatterns = [\n    path('admin\/', admin.site.urls),\n    path('my_app\/', include('my_app.urls')),\n]\n<\/code><\/pre>\n\n\n\n<p>\u3053\u308c\u306b\u3088\u308a\u3001\u3067\u59cb\u307e\u308b\u3059\u3079\u3066\u306e URL \u304c\u3001\u30a2\u30d7\u30ea\u306e\u30d5\u30a1\u30a4\u30eb\u3067\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u308b URL \u69cb\u6210\u306b\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u3055\u308c\u307e\u3059\u3002<code>\/my_app\/<\/code><code>my_app<\/code><code>urls.py<\/code><\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"5\">\n<li>\u540d\u524d\u4ed8\u304d\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3068\u30af\u30a8\u30ea \u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u4f7f\u7528\u3059\u308b<\/li>\n<\/ol>\n\n\n\n<p><code>path<\/code>&nbsp;\u95a2\u6570\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u5c71\u304b\u3063\u3053 ( \u304a\u3088\u3073 ) \u3092\u4f7f\u7528\u3057\u3066\u3001URL \u5185\u306e\u540d\u524d\u4ed8\u304d\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u5b9a\u7fa9\u3067\u304d\u307e\u3059\u3002 \u3053\u308c\u3089\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306f\u3001\u95a2\u9023\u4ed8\u3051\u3089\u308c\u305f\u30d3\u30e5\u30fc\u306b\u30ad\u30fc\u30ef\u30fc\u30c9\u5f15\u6570\u3068\u3057\u3066\u6e21\u3055\u308c\u307e\u3059\u3002 \u4f8b\u3048\u3070\uff1a<code>&lt;<\/code><code>&gt;<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django.urls import path\nfrom . import views\n\nurlpatterns = [\n    path('articles\/&lt;int:year&gt;\/&lt;int:month&gt;\/', views.articles),\n]\n<\/code><\/pre>\n\n\n\n<p>\u3053\u306e\u4f8b\u3067\u306f\u3001\u3068\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u304c\u30d3\u30e5\u30fc\u306b\u6e21\u3055\u308c\u307e\u3059\u3002 \u3055\u3089\u306b\u3001\u30af\u30a8\u30ea \u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u540d\u306e\u5f8c\u306b\u7d9a\u3051\u3066\u3001\u30d7\u30ed\u30d1\u30c6\u30a3\u3092\u4ecb\u3057\u3066\u30c7\u30a3\u30af\u30b7\u30e7\u30ca\u30ea\u306e\u4e00\u90e8\u3068\u3057\u3066\u30d3\u30e5\u30fc\u306b\u6e21\u3055\u308c\u308b URL \u5185\u306e\u30af\u30a8\u30ea \u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u5b9a\u7fa9\u3067\u304d\u307e\u3059\u3002<code>year<\/code><code>month<\/code><code>views.articles<\/code><code>?<\/code><code>request.GET<\/code><\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"6\">\n<li>URL \u30d1\u30bf\u30fc\u30f3\u306b\u540d\u524d\u3092\u4ed8\u3051\u308b<\/li>\n<\/ol>\n\n\n\n<p>\u5bfe\u3057\u3066<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1610\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3068\u30d3\u30e5\u30fc\u3067 URL \u30d1\u30bf\u30fc\u30f3\u3092\u3088\u308a\u9069\u5207\u306b\u53c2\u7167\u3059\u308b\u305f\u3081\u306b\u3001\u5404\u30d1\u30bf\u30fc\u30f3\u306b\u4e00\u610f\u306e\u540d\u524d\u3092\u4ed8\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u3053\u308c\u306f\u3001\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092 or \u95a2\u6570\u306b\u6e21\u3059\u3053\u3068\u3067\u5b9f\u73fe\u3067\u304d\u307e\u3059\u3002 URL \u30d1\u30bf\u30fc\u30f3\u306b\u540d\u524d\u304c\u3042\u308b\u5834\u5408\u3001\u95a2\u6570\u307e\u305f\u306f\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30bf\u30b0\u3092\u4f7f\u7528\u3057\u3066\u3001\u30cf\u30fc\u30c9\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u305b\u305a\u306b URL \u3092\u52d5\u7684\u306b\u751f\u6210\u3067\u304d\u307e\u3059\u3002<code>name<\/code><code>path<\/code><code>re_path<\/code><code>reverse<\/code><code>{% url %}<\/code><\/p>\n\n\n\n<p>\u4f8b\u3048\u3070\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django.urls import path\nfrom . import views\n\nurlpatterns = [\n    path('articles\/&lt;int:year&gt;\/&lt;int:month&gt;\/', views.articles, name='articles'),\n]\n<\/code><\/pre>\n\n\n\n<p>\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3067\u306f\u3001\u30bf\u30b0\u3092\u4f7f\u7528\u3057\u3066 URL \u3092\u751f\u6210\u3067\u304d\u307e\u3059\u3002<code>{% url %}<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">htmlCopy code<code>&lt;a href=\"{% url 'articles' year=2023 month=4 %}\"&gt;April 2023 Articles&lt;\/a&gt;\n<\/code><\/pre>\n\n\n\n<p>\u30d3\u30e5\u30fc\u3067\u306f\u3001\u3053\u306e\u95a2\u6570\u3092\u4f7f\u7528\u3057\u3066 URL \u3092\u751f\u6210\u3067\u304d\u307e\u3059\u3002<code>reverse<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django.urls import reverse\nfrom django.http import HttpResponseRedirect\n\ndef my_view(request):\n    url = reverse('articles', kwargs={'year': 2023, 'month': 4})\n    return HttpResponseRedirect(url)\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"7\">\n<li>URL \u540d\u524d\u7a7a\u9593<\/li>\n<\/ol>\n\n\n\n<p>\u5927\u898f\u6a21\u306a\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306f\u3001\u540c\u3058\u540d\u524d\u306e URL \u30d1\u30bf\u30fc\u30f3\u3092\u4f7f\u7528\u3059\u308b\u8907\u6570\u306e\u30a2\u30d7\u30ea\u306b\u906d\u9047\u3059\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002 \u7af6\u5408\u3092\u56de\u907f\u3059\u308b\u305f\u3081\u306b\u3001\u540d\u524d\u7a7a\u9593\u3092\u4f7f\u7528\u3057\u3066\u5404\u30a2\u30d7\u30ea\u306e URL \u3092\u30b0\u30eb\u30fc\u30d7\u5316\u3067\u304d\u307e\u3059\u3002 \u3053\u308c\u3092\u884c\u3046\u306b\u306f\u3001\u30a2\u30d7\u30ea\u306e\u30d5\u30a1\u30a4\u30eb\u3067\u5909\u6570\u3092\u5b9a\u7fa9\u3057\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30d5\u30a1\u30a4\u30eb\u3067\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u4f7f\u7528\u3057\u3066\u95a2\u6570\u3092\u547c\u3073\u51fa\u3059\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<code>urls.py<\/code><code>app_name<\/code><code>urls.py<\/code><code>namespace<\/code><code>include<\/code><\/p>\n\n\n\n<p>\u305f\u3068\u3048\u3070\u3001\u30a2\u30d7\u30ea\u306e\u30d5\u30a1\u30a4\u30eb\u3067\u6b21\u306e\u3088\u3046\u306b\u5b9a\u7fa9\u3057\u307e\u3059\u3002<code>urls.py<\/code><code>app_name<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django.urls import path\nfrom . import views\n\napp_name = 'my_app'\n\nurlpatterns = [\n    path('articles\/&lt;int:year&gt;\/&lt;int:month&gt;\/', views.articles, name='articles'),\n]\n<\/code><\/pre>\n\n\n\n<p>\u6b21\u306b\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30d5\u30a1\u30a4\u30eb\u5185\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002<code>urls.py<\/code><code>namespace<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django.contrib import admin\nfrom django.urls import path, include\n\nurlpatterns = [\n    path('admin\/', admin.site.urls),\n    path('my_app\/', include('my_app.urls', namespace='my_app')),\n]\n<\/code><\/pre>\n\n\n\n<p>\u540d\u524d\u7a7a\u9593\u30d7\u30ec\u30d5\u30a3\u30c3\u30af\u30b9\u306f\u3001\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3068\u30d3\u30e5\u30fc\u3067 URL \u3092\u53c2\u7167\u3059\u308b\u3068\u304d\u306b\u5fc5\u8981\u306b\u306a\u308a\u307e\u3057\u305f\u3002 \u305f\u3068\u3048\u3070\u3001\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3067\u306f\u3001\u6b21\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">htmlCopy code<code>&lt;a href=\"{% url 'my_app:articles' year=2023 month=4 %}\"&gt;April 2023 Articles&lt;\/a&gt;\n<\/code><\/pre>\n\n\n\n<p>\u30d3\u30e5\u30fc\u3067:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django.urls import reverse\nfrom django.http import HttpResponseRedirect\n\ndef my_view(request):\n    url = reverse('my_app:articles', kwargs={'year': 2023, 'month': 4})\n    return HttpResponseRedirect(url)\n<\/code><\/pre>\n\n\n\n<p>\u4e0a\u8a18\u306e\u624b\u9806\u306b\u5f93\u3063\u3066\u3001Django \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e URL \u3092\u69cb\u6210\u3057\u3066\u3001\u8981\u6c42\u3092\u9069\u5207\u306a\u30d3\u30e5\u30fc\u306b\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u3067\u304d\u307e\u3059\u3002 \u3053\u306e\u77e5\u8b58\u3092\u5b9f\u969b\u306b\u9069\u7528\u3059\u308b\u3068\u3001Django \u306e URL \u69cb\u6210\u306e\u7406\u89e3\u3092\u6df1\u3081\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1610\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>Django\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Django\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30b7\u30b9\u30c6\u30e0\u306f\u3001HTML\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306b\u52d5\u7684\u30c7\u30fc\u30bf\u3092\u633f\u5165\u3057\u3066\u52d5\u7684Web\u30da\u30fc\u30b8\u3092\u4f5c\u6210\u3067\u304d\u308b\u5f37\u529b\u3067\u67d4\u8edf\u306a\u30c4\u30fc\u30eb\u3067\u3059\u3002 \u4ee5\u4e0b\u3067\u306f\u3001\u57fa\u672c\u7684\u306a\u6982\u5ff5\u3068Django\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u4f7f\u7528\u65b9\u6cd5\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u57fa\u672c\u7684\u306a\u6982\u5ff5<\/li>\n<\/ol>\n\n\n\n<p>Django \u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306f\u3001\u7279\u6b8a\u306a\u69cb\u6587\u3092\u542b\u3080\u30c6\u30ad\u30b9\u30c8 \u30d5\u30a1\u30a4\u30eb\u3067\u3001\u901a\u5e38\u306f \u3067\u7d42\u308f\u308a\u307e\u3059\u3002 \u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306b\u306f\u3001\u30da\u30fc\u30b8\u306e\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u65b9\u6cd5\u3092\u5236\u5fa1\u3059\u308b\u30bf\u30b0\u3001\u5909\u6570\u3001\u304a\u3088\u3073\u30d5\u30a3\u30eb\u30bf\u30fc\u3092\u542b\u3081\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<code>.html<\/code><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5909\u6570: \u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306b\u52d5\u7684\u30c7\u30fc\u30bf\u3092\u51fa\u529b\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002 \u5909\u6570\u306f\u3001\u306e\u3088\u3046\u306b\u4e8c\u91cd\u4e2d\u62ec\u5f27\u3067\u56f2\u307e\u308c\u307e\u3059\u3002<code>{{ variable_name }}<\/code><\/li>\n\n\n\n<li>\u30e9\u30d9\u30eb: \u30eb\u30fc\u30d7\u3001\u6761\u4ef6\u4ed8\u304d\u5224\u65ad\u306a\u3069\u306e\u7279\u5b9a\u306e\u30a2\u30af\u30b7\u30e7\u30f3\u3092\u5b9f\u884c\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002 \u30e9\u30d9\u30eb\u306f\u3001\u4e2d\u62ec\u5f27\u3068\u30d1\u30fc\u30bb\u30f3\u30c8\u8a18\u53f7\u3067\u56f2\u307e\u308c\u307e\u3059\u3002<code>{% tag_name %}<\/code><\/li>\n\n\n\n<li>\u30d5\u30a3\u30eb\u30bf\u30fc: \u5927\u6587\u5b57\u3068\u5c0f\u6587\u5b57\u306e\u5909\u63db\u3001\u65e5\u4ed8\u306e\u66f8\u5f0f\u8a2d\u5b9a\u306a\u3069\u306e\u5909\u6570\u3092\u64cd\u4f5c\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002 \u30d5\u30a3\u30eb\u30bf\u30fc\u306f\u3001 \u306a\u3069\u306e\u30d1\u30a4\u30d7\u6587\u5b57\u3067\u793a\u3055\u308c\u307e\u3059\u3002<code>|<\/code><code>{{ variable_name|filter_name }}<\/code><\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\">\n<li>\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8 \u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3059\u308b<\/li>\n<\/ol>\n\n\n\n<p>\u307e\u305a\u3001Django \u30a2\u30d7\u30ea\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b \u3068\u3044\u3046\u540d\u524d\u306e\u30d5\u30a9\u30eb\u30c0\u30fc\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002 \u6b21\u306b\u3001\u305d\u306e\u30d5\u30a9\u30eb\u30c0\u30fc\u5185\u3067\u7d42\u308f\u308b\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8 \u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001 \u3068\u3044\u3046\u540d\u524d\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3067\u304d\u307e\u3059\u3002<code>templates<\/code><code>.html<\/code><code>index.html<\/code><\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"3\">\n<li>\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u5909\u6570<\/li>\n<\/ol>\n\n\n\n<p>\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u5909\u6570\u306f\u3001\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306b\u52d5\u7684\u30c7\u30fc\u30bf\u3092\u51fa\u529b\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002 \u30d3\u30e5\u30fc\u95a2\u6570\u3067\u306f\u3001\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306b\u8868\u793a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u30c7\u30fc\u30bf\u3092\u95a2\u6570\u306b\u6e21\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u4f8b\u3048\u3070\uff1a<code>render<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django.shortcuts import render\n\ndef my_view(request):\n    my_variable = \"Hello, World!\"\n    return render(request, 'index.html', {'my_variable': my_variable})\n<\/code><\/pre>\n\n\n\n<p>\u6b21\u306b\u3001\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3067\u4e8c\u91cd\u4e2d\u62ec\u5f27\u3092\u4f7f\u7528\u3057\u3066\u5909\u6570\u3092\u51fa\u529b\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">htmlCopy code<code>&lt;p&gt;{{ my_variable }}&lt;\/p&gt;\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"4\">\n<li>\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30e9\u30d9\u30eb<\/li>\n<\/ol>\n\n\n\n<p>\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30bf\u30b0\u306f\u3001\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3067\u7279\u5b9a\u306e\u30a2\u30af\u30b7\u30e7\u30f3\u3092\u5b9f\u884c\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002 \u4e00\u822c\u7684\u306a\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30bf\u30b0\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>{% for %}<\/code>&nbsp;\u304a\u3088\u3073 : \u30ea\u30b9\u30c8\u307e\u305f\u306f\u30c7\u30a3\u30af\u30b7\u30e7\u30ca\u30ea\u3092\u30eb\u30fc\u30d7\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002<code>{% endfor %}<\/code><\/li>\n\n\n\n<li><code>{% if %}<\/code>\u3001\u3001\u304a\u3088\u3073:\u6761\u4ef6\u4ed8\u304d\u5224\u65ad\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002<code>{% elif %}<\/code><code>{% endif %}<\/code><\/li>\n\n\n\n<li><code>{% block %}<\/code>&nbsp;\u304a\u3088\u3073 : \u4ed6\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3067\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3067\u304d\u308b\u30d6\u30ed\u30c3\u30af\u3092\u5b9a\u7fa9\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3057\u307e\u3059\u3002<code>{% endblock %}<\/code><\/li>\n\n\n\n<li><code>{% include %}<\/code>: \u8ffd\u52a0\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u542b\u3081\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002<\/li>\n\n\n\n<li><code>{% extends %}<\/code>: \u4ed6\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u304b\u3089\u7d99\u627f\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002<\/li>\n<\/ul>\n\n\n\n<p>\u305f\u3068\u3048\u3070\u3001\u30bf\u30b0\u3092\u4f7f\u7528\u3057\u3066\u30ea\u30b9\u30c8\u3092\u53cd\u5fa9\u51e6\u7406\u3057\u307e\u3059\u3002<code>for<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">htmlCopy code<code>&lt;ul&gt;\n{% for item in items %}\n  &lt;li&gt;{{ item }}&lt;\/li&gt;\n{% endfor %}\n&lt;\/ul&gt;\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"5\">\n<li>\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8 \u30d5\u30a3\u30eb\u30bf\u30fc<\/li>\n<\/ol>\n\n\n\n<p>\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30d5\u30a3\u30eb\u30bf\u30fc\u306f\u3001\u5909\u6570\u3092\u64cd\u4f5c\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002 \u4e00\u822c\u7684\u306a\u30d5\u30a3\u30eb\u30bf\u30fc\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>date<\/code>: \u65e5\u4ed8\u3068\u6642\u523b\u306e\u66f8\u5f0f\u8a2d\u5b9a\u306b\u4f7f\u7528\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li><code>length<\/code>: \u30ea\u30b9\u30c8\u307e\u305f\u306f\u6587\u5b57\u5217\u306e\u9577\u3055\u3092\u8a08\u7b97\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002<\/li>\n\n\n\n<li><code>lower<\/code>: \u30c6\u30ad\u30b9\u30c8\u3092\u5c0f\u6587\u5b57\u306b\u5909\u63db\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li><code>upper<\/code>: \u30c6\u30ad\u30b9\u30c8\u3092\u5927\u6587\u5b57\u306b\u5909\u63db\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li><code>default<\/code>:\u5909\u6570\u306e\u8a00\u53ca\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1610\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u3092\u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306b\u7f6e\u304d\u63db\u3048\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u305f\u3068\u3048\u3070\u3001\u30d5\u30a3\u30eb\u30bf\u30fc\u3092\u4f7f\u7528\u3057\u3066\u65e5\u4ed8\u3092\u66f8\u5f0f\u8a2d\u5b9a\u3057\u307e\u3059\u3002<code>date<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">htmlCopy code<code>&lt;p&gt;{{ date_variable|date:\"Y-m-d\" }}&lt;\/p&gt;\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"6\">\n<li>\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u7d99\u627f<\/li>\n<\/ol>\n\n\n\n<p>\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u7d99\u627f\u3092\u4f7f\u7528\u3059\u308b\u3068\u30011 \u3064\u306e\u57fa\u672c\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3067\u30da\u30fc\u30b8\u306e\u5171\u6709\u69cb\u9020\u3092\u5b9a\u7fa9\u3057\u3001\u5b50\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u7279\u5b9a\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3092\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u307e\u305f\u306f\u62e1\u5f35\u3067\u304d\u307e\u3059\u3002 \u3053\u308c\u306b\u3088\u308a\u3001\u30b3\u30fc\u30c9\u306e\u91cd\u8907\u304c\u306a\u304f\u306a\u308a\u3001\u4fdd\u5b88\u6027\u304c\u5411\u4e0a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u307e\u305a\u3001\u30d9\u30fc\u30b9\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8( \u306a\u3069)\u3092\u4f5c\u6210\u3057\u3001\u30bf\u30b0\u3092\u4f7f\u7528\u3057\u3066\u30ab\u30d0\u30fc\u3067\u304d\u308b\u30d6\u30ed\u30c3\u30af\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002<code>base.html<\/code><code>{% block %}<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">htmlCopy code<code>&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n&lt;head&gt;\n  &lt;title&gt;{% block title %}Default Title{% endblock %}&lt;\/title&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n  &lt;div id=\"content\"&gt;\n    {% block content %}{% endblock %}\n  &lt;\/div&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;\n<\/code><\/pre>\n\n\n\n<p>\u6b21\u306b\u3001\u5b50\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u30bf\u30b0\u3092\u4f7f\u7528\u3057\u3066\u30d9\u30fc\u30b9\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u7d99\u627f\u3057\u3001\u30bf\u30b0\u3092\u4f7f\u7528\u3057\u3066\u30d6\u30ed\u30c3\u30af\u3092\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u307e\u305f\u306f\u5c55\u958b\u3057\u307e\u3059\u3002<code>{% extends %}<\/code><code>{% block %}<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">htmlCopy code<code>{% extends \"base.html\" %}\n\n{% block title %}My Custom Title{% endblock %}\n\n{% block content %}\n  &lt;h1&gt;Welcome to my website!&lt;\/h1&gt;\n  &lt;p&gt;This is the homepage.&lt;\/p&gt;\n{% endblock %}\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"7\">\n<li>\u9759\u7684\u30d5\u30a1\u30a4\u30eb\u3092\u4f7f\u7528\u3059\u308b<\/li>\n<\/ol>\n\n\n\n<p>CSS\u3001JavaScript\u3001\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u5185\u306e\u753b\u50cf\u306a\u3069\u306e\u9759\u7684\u30d5\u30a1\u30a4\u30eb\u3092\u53c2\u7167\u3059\u308b\u306b\u306f\u3001\u30bf\u30b0\u8aad\u307f\u8fbc\u307f\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u4f7f\u7528\u3057\u3001\u30bf\u30b0\u3092\u4f7f\u7528\u3057\u3066\u9759\u7684\u30d5\u30a1\u30a4\u30eb\u306eURL\u3092\u751f\u6210\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u4f8b\u3048\u3070\uff1a<code>{% load %}<\/code><code>static<\/code><code>{% static %}<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">htmlCopy code<code>{% load static %}\n\n&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n&lt;head&gt;\n  &lt;link rel=\"stylesheet\" href=\"{% static 'css\/style.css' %}\"&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n  &lt;!-- ... --&gt;\n  &lt;script src=\"{% static 'js\/script.js' %}\"&gt;&lt;\/script&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;\n<\/code><\/pre>\n\n\n\n<p>\u4e0a\u8a18\u306e\u6982\u5ff5\u3068\u4f8b\u3092\u4f7f\u7528\u3057\u3066\u3001Django\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30b7\u30b9\u30c6\u30e0\u306e\u57fa\u672c\u3092\u7406\u89e3\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u5b9f\u969b\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306f\u3001\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u3053\u308c\u3089\u306e\u6a5f\u80fd\u3092\u4f7f\u7528\u3057\u3066\u3001\u52d5\u7684\u3067\u4fdd\u5b88\u3057\u3084\u3059\u3044 Web \u30da\u30fc\u30b8\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1610\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u6b21\u306b\u3001Django \u30d5\u30a9\u30fc\u30e0\u306e\u57fa\u672c\u7684\u306a\u6982\u5ff5\u3068\u4f7f\u7528\u6cd5\u3092\u7d39\u4ecb\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30b8\u30e3\u30f3\u30b4\u30d5\u30a9\u30fc\u30e0\u306e\u57fa\u672c\u6982\u5ff5<\/li>\n<\/ol>\n\n\n\n<p>Django Forms \u306f\u3001\u30e6\u30fc\u30b6\u30fc\u304c\u9001\u4fe1\u3057\u305f\u30d5\u30a9\u30fc\u30e0\u30c7\u30fc\u30bf\u3092\u64cd\u4f5c\u3059\u308b\u305f\u3081\u306e\u5f37\u529b\u3067\u67d4\u8edf\u306a\u30c4\u30fc\u30eb\u3067\u3059\u3002 \u30d5\u30a9\u30fc\u30e0\u3092\u4f7f\u7528\u3057\u3066\u3001\u30c7\u30fc\u30bf\u306e\u691c\u8a3c\u3068\u30af\u30ea\u30fc\u30cb\u30f3\u30b0\u3001HTML \u30d5\u30a9\u30fc\u30e0\u8981\u7d20\u306e\u751f\u6210\u3001\u304a\u3088\u3073\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3078\u306e\u30c7\u30fc\u30bf\u306e\u4fdd\u5b58\u3092\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p>Django \u306b\u306f\u3001\u6b21\u306e 2 \u7a2e\u985e\u306e\u30d5\u30a9\u30fc\u30e0\u304c\u7528\u610f\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u57fa\u672c\u30d5\u30a9\u30fc\u30e0(\u30d5\u30a9\u30fc\u30e0):\u30ab\u30b9\u30bf\u30e0\u30d5\u30a9\u30fc\u30e0\u306e\u4f5c\u6210\u306b\u4f7f\u7528\u3055\u308c\u3001\u30d5\u30a9\u30fc\u30e0\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u624b\u52d5\u3067\u5b9a\u7fa9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/li>\n\n\n\n<li>ModelForm: \u30e2\u30c7\u30eb\u95a2\u9023\u306e\u30d5\u30a9\u30fc\u30e0\u306b\u4f7f\u7528\u3055\u308c\u3001\u30d5\u30a9\u30fc\u30e0\u30d5\u30a3\u30fc\u30eb\u30c9\u306f\u81ea\u52d5\u7684\u306b\u751f\u6210\u3055\u308c\u3001\u30e2\u30c7\u30eb\u5b9a\u7fa9\u306b\u5f93\u3063\u3066\u30ec\u30b3\u30fc\u30c9\u3092\u4f5c\u6210\u304a\u3088\u3073\u66f4\u65b0\u3057\u307e\u3059\u3002<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\">\n<li>\u57fa\u672c\u30d5\u30a9\u30fc\u30e0\u3092\u4f5c\u6210\u3059\u308b<\/li>\n<\/ol>\n\n\n\n<p>\u307e\u305a\u3001Django \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b \u3068\u3044\u3046\u540d\u524d\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002 \u6b21\u306b\u3001\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u30a4\u30f3\u30dd\u30fc\u30c8\u3057\u3001 \u3092\u7d99\u627f\u3059\u308b\u30af\u30e9\u30b9\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002 \u3053\u306e\u30af\u30e9\u30b9\u3067\u306f\u3001\u30d5\u30a9\u30fc\u30e0\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002<code>forms.py<\/code><code>django.forms<\/code><code>forms.Form<\/code><\/p>\n\n\n\n<p>\u305f\u3068\u3048\u3070\u3001\u7c21\u5358\u306a\u304a\u554f\u3044\u5408\u308f\u305b\u30d5\u30a9\u30fc\u30e0\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django import forms\n\nclass ContactForm(forms.Form):\n    name = forms.CharField(label='Name', max_length=100)\n    email = forms.EmailField(label='Email')\n    message = forms.CharField(label='Message', widget=forms.Textarea)\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"3\">\n<li>\u30d5\u30a9\u30fc\u30e0\u3092\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u3059\u308b<\/li>\n<\/ol>\n\n\n\n<p>\u30d3\u30e5\u30fc\u95a2\u6570\u3067\u3001\u30d5\u30a9\u30fc\u30e0\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u4f5c\u6210\u3057\u3001\u95a2\u6570\u306b\u6e21\u3057\u307e\u3059\u3002 \u4f8b\u3048\u3070\uff1a<code>render<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django.shortcuts import render\nfrom .forms import ContactForm\n\ndef contact_view(request):\n    form = ContactForm()\n    return render(request, 'contact.html', {'form': form})\n<\/code><\/pre>\n\n\n\n<p>\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3067\u3001\u5909\u6570\u3092\u4f7f\u7528\u3057\u3066\u30d5\u30a9\u30fc\u30e0\u306e HTML \u30b3\u30fc\u30c9\u3092\u51fa\u529b\u3057\u307e\u3059\u3002 \u30d5\u30a9\u30fc\u30e0\u306e\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u65b9\u6cd5\u3092\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u306f\u3001\u30d5\u30a9\u30fc\u30e0\u30d5\u30a3\u30fc\u30eb\u30c9\u30921\u3064\u305a\u3064\u51fa\u529b\u3067\u304d\u307e\u3059\u3002 \u4f8b\u3048\u3070\uff1a<code>{{ form }}<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">htmlCopy code<code>&lt;form method=\"post\"&gt;\n  {% csrf_token %}\n  {{ form.name.label_tag }} {{ form.name }}\n  {{ form.email.label_tag }} {{ form.email }}\n  {{ form.message.label_tag }} {{ form.message }}\n  &lt;input type=\"submit\" value=\"Submit\"&gt;\n&lt;\/form&gt;\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"4\">\n<li>\u30d5\u30a9\u30fc\u30e0\u9001\u4fe1\u306e\u51e6\u7406<\/li>\n<\/ol>\n\n\n\n<p>view \u95a2\u6570\u3067\u3001request \u30e1\u30bd\u30c3\u30c9\u304c \u3067\u3042\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3001\u9001\u4fe1\u3055\u308c\u305f\u30c7\u30fc\u30bf\u306b\u57fa\u3065\u3044\u3066\u30d5\u30a9\u30fc\u30e0\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002 \u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u30c7\u30fc\u30bf\u3092\u691c\u8a3c\u3057\u3001\u691c\u8a3c\u306b\u5408\u683c\u3057\u305f\u3068\u304d\u306b\u30c7\u30fc\u30bf\u3092\u51e6\u7406\u3057\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u9001\u4fe1\u3057\u307e\u3059\u3002<code>POST<\/code><code>is_valid()<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django.shortcuts import render\nfrom django.core.mail import send_mail\nfrom .forms import ContactForm\n\ndef contact_view(request):\n    if request.method == 'POST':\n        form = ContactForm(request.POST)\n        if form.is_valid():\n            name = form.cleaned_data['name']\n            email = form.cleaned_data['email']\n            message = form.cleaned_data['message']\n\n            send_mail(\n                f'Message from {name} &lt;{email}&gt;',\n                message,\n                email,\n                ['your@email.com']\n            )\n\n            return render(request, 'contact_success.html')\n\n    else:\n        form = ContactForm()\n\n    return render(request, 'contact.html', {'form': form})\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"5\">\n<li>\u30e2\u30c7\u30eb \u30d5\u30a9\u30fc\u30e0\u3092\u4f5c\u6210\u3059\u308b<\/li>\n<\/ol>\n\n\n\n<p>\u30e2\u30c7\u30eb\u95a2\u9023\u306e\u30d5\u30a9\u30fc\u30e0\u306e\u5834\u5408\u306f\u3001\u3053\u306e\u30af\u30e9\u30b9\u3092\u4f7f\u7528\u3057\u3066\u30d5\u30a9\u30fc\u30e0\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u81ea\u52d5\u7684\u306b\u751f\u6210\u3067\u304d\u307e\u3059\u3002 \u307e\u305a\u3001\u30d5\u30a1\u30a4\u30eb\u306b\u30e2\u30c7\u30eb\u3068\u30af\u30e9\u30b9\u3092\u30a4\u30f3\u30dd\u30fc\u30c8\u3057\u3066\u304b\u3089\u3001\u5f8c\u7d9a\u51e6\u7406\u3092\u5b9a\u7fa9\u3057\u307e\u3059<code>ModelForm<\/code><code>forms.py<\/code><code>ModelForm<\/code><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1610\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u30af\u30e9\u30b9\u304b\u3089\u7d99\u627f\u3057\u3001\u95a2\u9023\u4ed8\u3051\u3089\u308c\u305f\u30e2\u30c7\u30eb\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001 \u3068\u3044\u3046\u540d\u524d\u306e\u30e2\u30c7\u30eb\u306e\u30e2\u30c7\u30eb\u30d5\u30a9\u30fc\u30e0\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<code>forms.ModelForm<\/code><code>Article<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django import forms\nfrom .models import Article\n\nclass ArticleForm(forms.ModelForm):\n    class Meta:\n        model = Article\n        fields = ['title', 'content', 'author']\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"6\">\n<li>\u30e2\u30c7\u30eb\u30d5\u30a9\u30fc\u30e0\u3092\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u3059\u308b<\/li>\n<\/ol>\n\n\n\n<p>\u57fa\u672c\u30d5\u30a9\u30fc\u30e0\u3068\u540c\u69d8\u306b\u3001\u30d3\u30e5\u30fc\u95a2\u6570\u3067\u30e2\u30c7\u30eb\u30d5\u30a9\u30fc\u30e0\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u4f5c\u6210\u3057\u3001\u305d\u308c\u3092\u95a2\u6570\u306b\u6e21\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u4f8b\u3048\u3070\uff1a<code>render<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django.shortcuts import render\nfrom .forms import ArticleForm\n\ndef article_create_view(request):\n    form = ArticleForm()\n    return render(request, 'article_create.html', {'form': form})\n<\/code><\/pre>\n\n\n\n<p>\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3067\u306f\u3001\u30e2\u30c7\u30eb \u30d5\u30a9\u30fc\u30e0\u306f\u57fa\u672c\u30d5\u30a9\u30fc\u30e0\u3068\u540c\u3058\u65b9\u6cd5\u3067\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u3055\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"7\">\n<li>\u30e2\u30c7\u30eb\u30d5\u30a9\u30fc\u30e0\u306e\u9001\u4fe1\u3092\u51e6\u7406\u3057\u307e\u3059<\/li>\n<\/ol>\n\n\n\n<p>\u30d3\u30e5\u30fc\u95a2\u6570\u3067\u30e2\u30c7\u30eb \u30d5\u30a9\u30fc\u30e0\u306e\u9001\u4fe1\u3092\u51e6\u7406\u3059\u308b\u30d7\u30ed\u30bb\u30b9\u306f\u3001\u57fa\u672c\u30d5\u30a9\u30fc\u30e0\u306b\u4f3c\u3066\u3044\u307e\u3059\u3002 \u305f\u3060\u3057\u3001\u691c\u8a3c\u306b\u5408\u683c\u3057\u305f\u5834\u5408\u306f\u3001\u3053\u306e\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u30c7\u30fc\u30bf\u3092\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u76f4\u63a5\u4fdd\u5b58\u3067\u304d\u307e\u3059\u3002 \u4f8b\u3048\u3070\uff1a<code>save()<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django.shortcuts import render, redirect\nfrom .forms import ArticleForm\n\ndef article_create_view(request):\n    if request.method == 'POST':\n        form = ArticleForm(request.POST)\n        if form.is_valid():\n            form.save()\n            return redirect('articles')\n\n    else:\n        form = ArticleForm()\n\n    return render(request, 'article_create.html', {'form': form})\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"8\">\n<li>\u30e2\u30c7\u30eb \u30ec\u30b3\u30fc\u30c9\u306e\u66f4\u65b0<\/li>\n<\/ol>\n\n\n\n<p>\u30e2\u30c7\u30eb\u30d5\u30a9\u30fc\u30e0\u3092\u4f7f\u7528\u3057\u3066\u65e2\u5b58\u306e\u30e2\u30c7\u30eb\u30ec\u30b3\u30fc\u30c9\u3092\u66f4\u65b0\u3059\u308b\u306b\u306f\u3001\u307e\u305a\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304b\u3089\u30ec\u30b3\u30fc\u30c9\u3092\u30d5\u30a7\u30c3\u30c1\u3057\u3001\u30d5\u30a9\u30fc\u30e0\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306b\u6e21\u3059\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u6b21\u306b\u3001\u30d5\u30a9\u30fc\u30e0\u9001\u4fe1\u3092\u51e6\u7406\u3059\u308b\u3068\u304d\u306b\u3001\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u30ec\u30b3\u30fc\u30c9\u3092\u66f4\u65b0\u3057\u307e\u3059\u3002 \u4f8b\u3048\u3070\uff1a<code>save()<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django.shortcuts import render, redirect, get_object_or_404\nfrom .models import Article\nfrom .forms import ArticleForm\n\ndef article_update_view(request, pk):\n    article = get_object_or_404(Article, pk=pk)\n\n    if request.method == 'POST':\n        form = ArticleForm(request.POST, instance=article)\n        if form.is_valid():\n            form.save()\n            return redirect('articles')\n\n    else:\n        form = ArticleForm(instance=article)\n\n    return render(request, 'article_update.html', {'form': form})\n<\/code><\/pre>\n\n\n\n<p>\u4e0a\u8a18\u306e\u6982\u5ff5\u3068\u4f8b\u3092\u4f7f\u7528\u3057\u3066\u3001Django\u30d5\u30a9\u30fc\u30e0\u30b7\u30b9\u30c6\u30e0\u306e\u57fa\u672c\u7684\u306a\u7406\u89e3\u304c\u5fc5\u8981\u3067\u3059\u3002 \u5b9f\u969b\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306f\u3001\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u3053\u308c\u3089\u306e\u6a5f\u80fd\u3092\u4f7f\u7528\u3057\u3066\u3001\u30e6\u30fc\u30b6\u30fc\u304c\u9001\u4fe1\u3057\u305f\u30d5\u30a9\u30fc\u30e0 \u30c7\u30fc\u30bf\u3092\u51e6\u7406\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1610\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>Django\u30e6\u30fc\u30b6\u30fc\u306e\u8a8d\u8a3c\u3068\u627f\u8a8d\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Django\u306b\u306f\u5f37\u529b\u306a\u30e6\u30fc\u30b6\u30fc\u8a8d\u8a3c\u304a\u3088\u3073\u627f\u8a8d\u30b7\u30b9\u30c6\u30e0\u304c\u642d\u8f09\u3055\u308c\u3066\u304a\u308a\u3001\u30e6\u30fc\u30b6\u30fc\u306e\u30ed\u30b0\u30a4\u30f3\u3001\u30ed\u30b0\u30a2\u30a6\u30c8\u3001\u767b\u9332\u3001\u6a29\u9650\u7ba1\u7406\u306a\u3069\u3092\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u7c21\u5358\u306b\u8ffd\u52a0\u3067\u304d\u307e\u3059\u3002 \u6b21\u306b\u3001Django\u30e6\u30fc\u30b6\u30fc\u306e\u8a8d\u8a3c\u3068\u627f\u8a8d\u306e\u6982\u5ff5\u3068\u4f7f\u7528\u6cd5\u3092\u8a73\u3057\u304f\u8aac\u660e\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Django \u30e6\u30fc\u30b6\u30fc\u30e2\u30c7\u30eb<\/li>\n<\/ol>\n\n\n\n<p>Django\u72ec\u81ea\u306e\u30e6\u30fc\u30b6\u30fc\u30e2\u30c7\u30eb()\u306f\u30e2\u30b8\u30e5\u30fc\u30eb\u306b\u3042\u308a\u307e\u3059\u3002 \u3053\u308c\u306b\u306f\u3001\u30e6\u30fc\u30b6\u30fc\u540d\u3001\u30d1\u30b9\u30ef\u30fc\u30c9\u3001\u96fb\u5b50\u30e1\u30fc\u30eb\u3001\u540d\u3001\u59d3\u306a\u3069\u306e\u4e00\u822c\u7684\u306a\u30d5\u30a3\u30fc\u30eb\u30c9\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002 \u3055\u3089\u306b\u3001\u30e6\u30fc\u30b6\u30fc\u306e\u30a2\u30af\u30c6\u30a3\u30d6\u5316\u30b9\u30c6\u30fc\u30bf\u30b9\u3001\u30a2\u30af\u30bb\u30b9\u8a31\u53ef\u306a\u3069\u3092\u7ba1\u7406\u3059\u308b\u305f\u3081\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u304c\u3042\u308a\u307e\u3059\u3002<code>User<\/code><code>django.contrib.auth.models<\/code><\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\">\n<li>\u30e6\u30fc\u30b6\u30fc\u8a8d\u8a3c\u30d3\u30e5\u30fc<\/li>\n<\/ol>\n\n\n\n<p>Django\u306f\u3001\u30ed\u30b0\u30a4\u30f3\u3001\u30ed\u30b0\u30a2\u30a6\u30c8\u3001\u30d1\u30b9\u30ef\u30fc\u30c9\u5909\u66f4\u306a\u3069\u306e\u30e6\u30fc\u30b6\u30fc\u8a8d\u8a3c\u95a2\u9023\u306e\u64cd\u4f5c\u3092\u51e6\u7406\u3059\u308b\u305f\u3081\u306e\u4e8b\u524d\u5b9a\u7fa9\u3055\u308c\u305f\u30d3\u30e5\u30fc\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002 \u3053\u308c\u3089\u306e\u30d3\u30e5\u30fc\u3092\u4f7f\u7528\u3059\u308b\u306b\u306f\u3001\u307e\u305a\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30d5\u30a1\u30a4\u30eb\u306b\u30a4\u30f3\u30dd\u30fc\u30c8\u3057\u3001\u9069\u5207\u306a URL \u69cb\u6210\u3092\u8ffd\u52a0\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<code>urls.py<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django.contrib import admin\nfrom django.urls import path, include\n\nurlpatterns = [\n    path('admin\/', admin.site.urls),\n    path('accounts\/', include('django.contrib.auth.urls')),\n]\n<\/code><\/pre>\n\n\n\n<p>\u3053\u308c\u306b\u3088\u308a\u3001\u6b21\u306e\u30a2\u30af\u30b7\u30e7\u30f3\u306e URL \u304c\u8ffd\u52a0\u3055\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30ed\u30b0\u30a4\u30f3\uff1a<code>accounts\/login\/<\/code><\/li>\n\n\n\n<li>\u30ed\u30b0\u30a2\u30a6\u30c8\u3059\u308b\uff1a<code>accounts\/logout\/<\/code><\/li>\n\n\n\n<li>\u30d1\u30b9\u30ef\u30fc\u30c9\u5909\u66f4:<code>accounts\/password_change\/<\/code><\/li>\n\n\n\n<li>\u30d1\u30b9\u30ef\u30fc\u30c9\u306e\u5909\u66f4\u306b\u6210\u529f\u3057\u307e\u3057\u305f:<code>accounts\/password_change\/done\/<\/code><\/li>\n\n\n\n<li>\u30d1\u30b9\u30ef\u30fc\u30c9\u306e\u30ea\u30bb\u30c3\u30c8:<code>accounts\/password_reset\/<\/code><\/li>\n\n\n\n<li>\u30d1\u30b9\u30ef\u30fc\u30c9\u306e\u30ea\u30bb\u30c3\u30c8\u306b\u6210\u529f\u3057\u307e\u3057\u305f:<code>accounts\/password_reset\/done\/<\/code><\/li>\n\n\n\n<li>\u30d1\u30b9\u30ef\u30fc\u30c9\u306e\u30ea\u30bb\u30c3\u30c8\u306e\u78ba\u8a8d:<code>accounts\/reset\/&lt;uidb64&gt;\/&lt;token&gt;\/<\/code><\/li>\n\n\n\n<li>\u30d1\u30b9\u30ef\u30fc\u30c9\u306e\u30ea\u30bb\u30c3\u30c8\u304c\u6210\u529f\u3057\u305f\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002<code>accounts\/reset\/done\/<\/code><\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\" start=\"3\">\n<li>\u30e6\u30fc\u30b6\u30fc\u8a8d\u8a3c\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8<\/li>\n<\/ol>\n\n\n\n<p>\u8a8d\u8a3c\u30d3\u30e5\u30fc\u3092\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u3059\u308b\u306b\u306f\u3001\u9069\u5207\u306a\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u4f5c\u6210\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u3001Django \u306f \u3068\u3044\u3046\u540d\u524d\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u4e0b\u3067\u3053\u308c\u3089\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u691c\u7d22\u3057\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u6b21\u306e\u3088\u3046\u306a\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<code>registration<\/code><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30ed\u30b0\u30a4\u30f3\uff1a<code>registration\/login.html<\/code><\/li>\n\n\n\n<li>\u30d1\u30b9\u30ef\u30fc\u30c9\u5909\u66f4:<code>registration\/password_change_form.html<\/code><\/li>\n\n\n\n<li>\u30d1\u30b9\u30ef\u30fc\u30c9\u306e\u5909\u66f4\u306b\u6210\u529f\u3057\u307e\u3057\u305f:<code>registration\/password_change_done.html<\/code><\/li>\n\n\n\n<li>\u30d1\u30b9\u30ef\u30fc\u30c9\u306e\u30ea\u30bb\u30c3\u30c8:<code>registration\/password_reset_form.html<\/code><\/li>\n\n\n\n<li>\u30d1\u30b9\u30ef\u30fc\u30c9\u306e\u30ea\u30bb\u30c3\u30c8\u306b\u6210\u529f\u3057\u307e\u3057\u305f:<code>registration\/password_reset_done.html<\/code><\/li>\n\n\n\n<li>\u30d1\u30b9\u30ef\u30fc\u30c9\u306e\u30ea\u30bb\u30c3\u30c8\u306e\u78ba\u8a8d:<code>registration\/password_reset_confirm.html<\/code><\/li>\n\n\n\n<li>\u30d1\u30b9\u30ef\u30fc\u30c9\u306e\u30ea\u30bb\u30c3\u30c8\u304c\u6210\u529f\u3057\u305f\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002<code>registration\/password_reset_complete.html<\/code><\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\" start=\"4\">\n<li>\u30e6\u30fc\u30b6\u30fc\u767b\u9332<\/li>\n<\/ol>\n\n\n\n<p>Django \u306b\u306f\u30e6\u30fc\u30b6\u30fc\u767b\u9332\u306e\u4e8b\u524d\u5b9a\u7fa9\u3055\u308c\u305f\u30d3\u30e5\u30fc\u306f\u3042\u308a\u307e\u305b\u3093\u304c\u3001\u30e2\u30c7\u30eb\u3068\u30d5\u30a9\u30fc\u30e0\u30b7\u30b9\u30c6\u30e0\u3092\u4f7f\u7528\u3057\u3066\u7c21\u5358\u306b\u4f5c\u6210\u3067\u304d\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u30e6\u30fc\u30b6\u30fc\u767b\u9332\u30d5\u30a9\u30fc\u30e0\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<code>User<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django import forms\nfrom django.contrib.auth.models import User\n\nclass UserRegistrationForm(forms.ModelForm):\n    password = forms.CharField(label='Password', widget=forms.PasswordInput)\n    password_confirm = forms.CharField(label='Confirm Password', widget=forms.PasswordInput)\n\n    class Meta:\n        model = User\n        fields = ['username', 'email']\n\n    def clean_password_confirm(self):\n        cd = self.cleaned_data\n        if cd['password'] != cd['password_confirm']:\n            raise forms.ValidationError('Passwords do not match.')\n        return cd['password_confirm']\n<\/code><\/pre>\n\n\n\n<p>\u6b21\u306b\u3001\u30e6\u30fc\u30b6\u30fc\u767b\u9332\u30d3\u30e5\u30fc\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django.shortcuts import render, redirect\nfrom .forms\n<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1610\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u6b21\u306b\u3001\u30e6\u30fc\u30b6\u30fc\u767b\u9332\u30d3\u30e5\u30fc\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django.shortcuts import render, redirect\nfrom django.contrib.auth import login\nfrom .forms import UserRegistrationForm\n\ndef register(request):\n    if request.method == 'POST':\n        form = UserRegistrationForm(request.POST)\n        if form.is_valid():\n            user = form.save(commit=False)\n            user.set_password(form.cleaned_data['password'])\n            user.save()\n            login(request, user)  # \u81ea\u52a8\u767b\u5f55\u65b0\u6ce8\u518c\u7528\u6237\n            return redirect('home')\n    else:\n        form = UserRegistrationForm()\n    return render(request, 'registration\/register.html', {'form': form})\n<\/code><\/pre>\n\n\n\n<p>\u6700\u5f8c\u306b\u3001\u9069\u5207\u306a URL \u69cb\u6210\u30d5\u30a1\u30a4\u30eb\u3068\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8 \u30d5\u30a1\u30a4\u30eb\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"5\">\n<li>\u30e6\u30fc\u30b6\u30fc\u8a8d\u8a3c<\/li>\n<\/ol>\n\n\n\n<p>Django \u306e\u6a29\u9650\u30b7\u30b9\u30c6\u30e0\u3067\u306f\u3001\u30e6\u30fc\u30b6\u30fc\u3054\u3068\u306b\u7570\u306a\u308b\u6a29\u9650\u3092\u5272\u308a\u5f53\u3066\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u6a29\u9650\u306f\u3001\u30e2\u30c7\u30eb\u306b\u5bfe\u3059\u308b\u30a2\u30af\u30b7\u30e7\u30f3 (\u8ffd\u52a0\u3001\u5909\u66f4\u3001\u524a\u9664\u306a\u3069) \u307e\u305f\u306f\u30ab\u30b9\u30bf\u30e0 \u30a2\u30af\u30b7\u30e7\u30f3\u3067\u3059\u3002<\/p>\n\n\n\n<p>\u30e6\u30fc\u30b6\u30fc\u304c\u6a29\u9650\u3092\u6301\u3063\u3066\u3044\u308b\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u3059\u308b\u306b\u306f\u3001\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u30e6\u30fc\u30b6\u30fc\u304c\u8a18\u4e8b\u3092\u7de8\u96c6\u3067\u304d\u308b\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002<code>user.has_perm()<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>if request.user.has_perm('app_name.change_article'):\n    # \u7528\u6237\u53ef\u4ee5\u7f16\u8f91\u6587\u7ae0\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"6\">\n<li>\u30e6\u30fc\u30b6\u30fc\u30b0\u30eb\u30fc\u30d7<\/li>\n<\/ol>\n\n\n\n<p>\u30e6\u30fc\u30b6\u30fc\u30b0\u30eb\u30fc\u30d7()\u306f\u3001\u8907\u6570\u306e\u30e6\u30fc\u30b6\u30fc\u306b\u6a29\u9650\u3092\u5272\u308a\u5f53\u3066\u308b\u65b9\u6cd5\u3067\u3059\u3002 \u30e6\u30fc\u30b6\u30fc\u3092 1 \u3064\u4ee5\u4e0a\u306e\u30b0\u30eb\u30fc\u30d7\u306b\u8ffd\u52a0\u3057\u3001\u30b0\u30eb\u30fc\u30d7\u3054\u3068\u306b\u7570\u306a\u308b\u30a2\u30af\u30bb\u30b9\u8a31\u53ef\u3092\u5272\u308a\u5f53\u3066\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u30e6\u30fc\u30b6\u30fc\u304c\u30b0\u30eb\u30fc\u30d7\u306b\u5c5e\u3057\u3066\u3044\u308b\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u3059\u308b\u306b\u306f\u3001\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u30e6\u30fc\u30b6\u30fc\u304c\u7de8\u96c6\u30b0\u30eb\u30fc\u30d7\u306b\u5c5e\u3057\u3066\u3044\u308b\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002<code>Group<\/code><code>user.groups.filter()<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>if request.user.groups.filter(name='Editors').exists():\n    # \u7528\u6237\u5c5e\u4e8e\u7f16\u8f91\u7ec4\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"7\">\n<li>\u30c7\u30b3\u30ec\u30fc\u30bf<\/li>\n<\/ol>\n\n\n\n<p>\u30d3\u30e5\u30fc\u95a2\u6570\u3067\u30e6\u30fc\u30b6\u30fc\u6a29\u9650\u3092\u7c21\u5358\u306b\u78ba\u8a8d\u3067\u304d\u308b\u3088\u3046\u306b\u3001Django \u306b\u306f \u3001\u3001 \u306a\u3069\u306e\u30c7\u30b3\u30ec\u30fc\u30bf\u304c\u7528\u610f\u3055\u308c\u3066\u3044\u307e\u3059\u3002 \u3053\u308c\u3089\u306e\u30c7\u30b3\u30ec\u30fc\u30bf\u3092\u4f7f\u7528\u3059\u308b\u306b\u306f\u3001\u307e\u305a\u30d3\u30e5\u30fc\u30d5\u30a1\u30a4\u30eb\u306b\u30a4\u30f3\u30dd\u30fc\u30c8\u3057\u3066\u304b\u3089\u8ffd\u52a0\u3057\u3066\u304b\u3089\u3001\u30d3\u30e5\u30fc\u95a2\u6570\u5b9a\u7fa9\u306b\u8ffd\u52a0\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u30d3\u30e5\u30fc\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u305f\u3081\u306b\u30e6\u30fc\u30b6\u30fc\u306b\u30b5\u30a4\u30f3\u30a4\u30f3\u3092\u8981\u6c42\u3059\u308b\u5834\u5408:<code>login_required<\/code><code>permission_required<\/code><code>user_passes_test<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django.contrib.auth.decorators import login_required\n\n@login_required\ndef my_view(request):\n    # ...\n<\/code><\/pre>\n\n\n\n<p>\u30d3\u30e5\u30fc\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u6a29\u9650\u3092\u30e6\u30fc\u30b6\u30fc\u306b\u8981\u6c42\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django.contrib.auth.decorators import permission_required\n\n@permission_required('app_name.change_article')\ndef edit_article(request, pk):\n    # ...\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"8\">\n<li>\u30af\u30e9\u30b9\u30d3\u30e5\u30fc<\/li>\n<\/ol>\n\n\n\n<p>\u30af\u30e9\u30b9 \u30d3\u30e5\u30fc\u3067\u306f\u3001\u3001\u3001\u304a\u3088\u3073\u30df\u30c3\u30af\u30b9\u30a4\u30f3 \u30af\u30e9\u30b9\u3092\u4f7f\u7528\u3057\u3066\u30e6\u30fc\u30b6\u30fc\u306e\u30a2\u30af\u30bb\u30b9\u8a31\u53ef\u3092\u78ba\u8a8d\u3067\u304d\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u30af\u30e9\u30b9\u30d3\u30e5\u30fc\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u305f\u3081\u306b\u30e6\u30fc\u30b6\u30fc\u306b\u30ed\u30b0\u30a4\u30f3\u3092\u8981\u6c42\u3059\u308b\u306b\u306f\u3001\u6b21\u306e\u3088\u3046\u306b\u3057\u307e\u3059\u3002<code>LoginRequiredMixin<\/code><code>PermissionRequiredMixin<\/code><code>UserPassesTestMixin<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django.contrib.auth.mixins import LoginRequiredMixin\nfrom django.views.generic import TemplateView\n\nclass MyView(LoginRequiredMixin, TemplateView):\n    template_name = 'my_view.html'\n<\/code><\/pre>\n\n\n\n<p>\u4e0a\u8a18\u306e\u6982\u5ff5\u3068\u4f8b\u3092\u4f7f\u7528\u3057\u3066\u3001Django\u30e6\u30fc\u30b6\u30fc\u8a8d\u8a3c\u304a\u3088\u3073\u627f\u8a8d\u30b7\u30b9\u30c6\u30e0\u306e\u57fa\u672c\u3092\u7406\u89e3\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u5b9f\u969b\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306f\u3001\u3053\u308c\u3089\u306e\u6a5f\u80fd\u3092\u4f7f\u7528\u3057\u3066\u3001\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u3055\u307e\u3056\u307e\u306a\u30ec\u30d9\u30eb\u306e\u30e6\u30fc\u30b6\u30fc \u30a2\u30af\u30bb\u30b9\u5236\u5fa1\u3092\u5b9f\u88c5\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1610\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>Django\u9759\u7684\u30d5\u30a1\u30a4\u30eb\u3068\u30e1\u30c7\u30a3\u30a2\u30d5\u30a1\u30a4\u30eb\u306e\u51e6\u7406\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Django \u306f\u3001\u9759\u7684\u30d5\u30a1\u30a4\u30eb\u3068\u30e1\u30c7\u30a3\u30a2\u30d5\u30a1\u30a4\u30eb\u3092\u64cd\u4f5c\u3059\u308b\u6a5f\u80fd\u3092\u63d0\u4f9b\u3057\u3001\u3053\u308c\u3089\u306e\u30d5\u30a1\u30a4\u30eb\u306e\u7ba1\u7406\u3068\u63d0\u4f9b\u3092\u5bb9\u6613\u306b\u3057\u307e\u3059\u3002 \u9759\u7684\u30d5\u30a1\u30a4\u30eb\u306f\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u4e00\u90e8\u3067\u3042\u308a\u3001\u901a\u5e38\u306f CSS\u3001JavaScript\u3001\u753b\u50cf\u306a\u3069\u304c\u542b\u307e\u308c\u307e\u3059\u3002 \u30e1\u30c7\u30a3\u30a2\u30d5\u30a1\u30a4\u30eb\u306f\u3001\u753b\u50cf\u3001\u30d3\u30c7\u30aa\u306a\u3069\u3001\u30e6\u30fc\u30b6\u30fc\u304c\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3057\u305f\u30d5\u30a1\u30a4\u30eb\u3067\u3059\u3002 Django\u304c\u3053\u308c\u30892\u7a2e\u985e\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u305d\u308c\u305e\u308c\u3069\u306e\u3088\u3046\u306b\u51e6\u7406\u3059\u308b\u304b\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u9759\u7684\u30d5\u30a1\u30a4\u30eb\u51e6\u7406<\/li>\n<\/ol>\n\n\n\n<p>Django \u304c\u9759\u7684\u30d5\u30a1\u30a4\u30eb\u3092\u6b63\u3057\u304f\u51e6\u7406\u3059\u308b\u306b\u306f\u3001\u307e\u305a\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30d5\u30a1\u30a4\u30eb\u3067\u6b21\u306e\u8a2d\u5b9a\u3092\u69cb\u6210\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<code>settings.py<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code># settings.py\nSTATIC_URL = '\/static\/'\nSTATICFILES_DIRS = [os.path.join(BASE_DIR, \"static\"),]\n<\/code><\/pre>\n\n\n\n<p><code>STATIC_URL<\/code>&nbsp;\u306f\u9759\u7684\u30d5\u30a1\u30a4\u30eb\u306e URL \u63a5\u982d\u90e8\u3067\u3059\u304c\u3001\u9759\u7684\u30d5\u30a1\u30a4\u30eb\u3092\u542b\u3080\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u306e\u30ea\u30b9\u30c8\u3067\u3059\u3002 \u3053\u306e\u4f8b\u3067\u306f\u3001\u3059\u3079\u3066\u306e\u9759\u7684\u30d5\u30a1\u30a4\u30eb\u3092\u30d7\u30ed\u30b8\u30a7\u30af\u30c8 \u30eb\u30fc\u30c8\u306e\u4e0b\u306e\u30d5\u30a9\u30eb\u30c0\u30fc\u306b\u914d\u7f6e\u3057\u307e\u3059\u3002<code>STATICFILES_DIRS<\/code><code>static<\/code><\/p>\n\n\n\n<p>\u6b21\u306b\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306b\u30bf\u30b0\u3092\u4f7f\u7528\u3057\u3066\u9759\u7684\u30d5\u30a1\u30a4\u30eb\u3092\u30ed\u30fc\u30c9\u3057\u3001\u30bf\u30b0\u3092\u4f7f\u7528\u3057\u3066\u9759\u7684\u30d5\u30a1\u30a4\u30eb\u3092\u53c2\u7167\u3057\u307e\u3059\u3002 \u4f8b\u3048\u3070\uff1a<code>{% load static %}<\/code><code>{% static %}<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">htmlCopy code<code>{% load static %}\n&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n&lt;head&gt;\n    &lt;link rel=\"stylesheet\" href=\"{% static 'css\/style.css' %}\"&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n    &lt;img src=\"{% static 'images\/logo.png' %}\" alt=\"Logo\"&gt;\n    &lt;script src=\"{% static 'js\/main.js' %}\"&gt;&lt;\/script&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\">\n<li>\u30e1\u30c7\u30a3\u30a2\u30d5\u30a1\u30a4\u30eb\u306e\u51e6\u7406<\/li>\n<\/ol>\n\n\n\n<p>Django \u304c\u30e6\u30fc\u30b6\u30fc\u304c\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3057\u305f\u30e1\u30c7\u30a3\u30a2\u30d5\u30a1\u30a4\u30eb\u3092\u64cd\u4f5c\u3059\u308b\u306b\u306f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30d5\u30a1\u30a4\u30eb\u3067\u6b21\u306e\u8a2d\u5b9a\u3092\u69cb\u6210\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<code>settings.py<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code># settings.py\nMEDIA_URL = '\/media\/'\nMEDIA_ROOT = os.path.join(BASE_DIR, 'media')\n<\/code><\/pre>\n\n\n\n<p><code>MEDIA_URL<\/code>&nbsp;\u306f\u30e1\u30c7\u30a3\u30a2 \u30d5\u30a1\u30a4\u30eb\u306e URL \u30d7\u30ec\u30d5\u30a3\u30c3\u30af\u30b9\u3067\u3001\u30e1\u30c7\u30a3\u30a2 \u30d5\u30a1\u30a4\u30eb\u304c\u683c\u7d0d\u3055\u308c\u3066\u3044\u308b\u30eb\u30fc\u30c8 \u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3067\u3059\u3002 \u3053\u306e\u4f8b\u3067\u306f\u3001\u3059\u3079\u3066\u306e\u30e1\u30c7\u30a3\u30a2\u30d5\u30a1\u30a4\u30eb\u3092\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30eb\u30fc\u30c8\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u4e0b\u306e\u30d5\u30a9\u30eb\u30c0\u30fc\u306b\u4fdd\u5b58\u3057\u307e\u3059\u3002<code>MEDIA_ROOT<\/code><code>media<\/code><\/p>\n\n\n\n<p>\u6b21\u306b\u3001\u6b21\u306e\u30b3\u30fc\u30c9\u3092\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30d5\u30a1\u30a4\u30eb\u306b\u8ffd\u52a0\u3057\u3066\u3001\u30e1\u30c7\u30a3\u30a2 \u30d5\u30a1\u30a4\u30eb\u3092\u63d0\u4f9b\u3059\u308b\u3088\u3046\u306b Django \u3092\u69cb\u6210\u3057\u307e\u3059\u3002<code>urls.py<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django.conf import settings\nfrom django.conf.urls.static import static\n\nurlpatterns = [\n    # ... \u5176\u4ed6 URL \u914d\u7f6e ...\n]\n\nif settings.DEBUG:\n    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)\n<\/code><\/pre>\n\n\n\n<p>\u3053\u308c\u306b\u3088\u308a\u3001\u958b\u767a\u74b0\u5883\u3067Django\u304c\u30e1\u30c7\u30a3\u30a2\u30d5\u30a1\u30a4\u30eb\u3092\u78ba\u5b9f\u306b\u63d0\u4f9b\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002 \u305f\u3060\u3057\u3001\u672c\u756a\u74b0\u5883\u3067\u306f\u3001\u9759\u7684\u30d5\u30a1\u30a4\u30eb\u3068\u30e1\u30c7\u30a3\u30a2\u30d5\u30a1\u30a4\u30eb\u306b\u5c02\u7528\u306eWeb\u30b5\u30fc\u30d0\u30fc(Nginx\u3001Apache\u306a\u3069)\u3092\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n\n\n\n<p>\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u5185\u306e\u30e1\u30c7\u30a3\u30a2 \u30d5\u30a1\u30a4\u30eb\u3092\u53c2\u7167\u3059\u308b\u306b\u306f\u3001\u30e2\u30c7\u30eb \u30d5\u30a3\u30fc\u30eb\u30c9\u306e\u30d7\u30ed\u30d1\u30c6\u30a3\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001 \u3068\u3044\u3046\u540d\u524d\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u304c\u3042\u308b\u3068\u3057\u307e\u3059\u3002<code>url<\/code><code>image<\/code><code>ImageField<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">htmlCopy code<code>&lt;img src=\"{{ object.image.url }}\" alt=\"User uploaded image\"&gt;\n<\/code><\/pre>\n\n\n\n<p>\u4e0a\u8a18\u306e\u6982\u5ff5\u3068\u4f8b\u3092\u4f7f\u7528\u3057\u3066\u3001Django\u306e\u9759\u7684\u304a\u3088\u3073\u30e1\u30c7\u30a3\u30a2\u30d5\u30a1\u30a4\u30eb\u306e\u51e6\u7406\u306e\u57fa\u672c\u3092\u7406\u89e3\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u5b9f\u969b\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306f\u3001\u3053\u308c\u3089\u306e\u6a5f\u80fd\u3092\u4f7f\u7528\u3057\u3066\u7ba1\u7406\u3057\u3001\u5fc5\u8981\u306b\u5fdc\u3058\u3066<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1610\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"3\">\n<li>\u9759\u7684\u30d5\u30a1\u30a4\u30eb\u3068\u30e1\u30c7\u30a3\u30a2\u30d5\u30a1\u30a4\u30eb\u306e\u5c55\u958b<\/li>\n<\/ol>\n\n\n\n<p>\u958b\u767a\u74b0\u5883\u3067\u306f\u3001Django \u306f\u9759\u7684\u30d5\u30a1\u30a4\u30eb\u3068\u30e1\u30c7\u30a3\u30a2\u30d5\u30a1\u30a4\u30eb\u3092\u76f4\u63a5\u64cd\u4f5c\u3067\u304d\u307e\u3059\u3002 \u305f\u3060\u3057\u3001\u904b\u7528\u74b0\u5883\u3067\u306f\u3001\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3068\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306e\u8003\u616e\u4e8b\u9805\u306b\u3088\u308a\u3001\u5c02\u7528\u306eWeb\u30b5\u30fc\u30d0\u30fc(Nginx\u3001Apache\u306a\u3069)\u307e\u305f\u306f\u30b3\u30f3\u30c6\u30f3\u30c4\u914d\u4fe1\u30cd\u30c3\u30c8\u30ef\u30fc\u30af(CDN)\u3092\u4f7f\u7528\u3057\u3066\u3053\u308c\u3089\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u51e6\u7406\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u4ee5\u4e0b\u306f\u3001Nginx\u3092Web\u30b5\u30fc\u30d0\u30fc\u3068\u3057\u3066\u4f7f\u7528\u3057\u3066\u9759\u7684\u30d5\u30a1\u30a4\u30eb\u3068\u30e1\u30c7\u30a3\u30a2\u30d5\u30a1\u30a4\u30eb\u3092\u51e6\u7406\u3059\u308b\u305f\u3081\u306e\u69cb\u6210\u4f8b\u3067\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">bashCopy code<code>server {\n    listen 80;\n    server_name example.com;\n    root \/path\/to\/your\/project;\n\n    location \/ {\n        proxy_pass http:\/\/127.0.0.1:8000;\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n    }\n\n    location \/static\/ {\n        alias \/path\/to\/your\/static\/files\/;\n    }\n\n    location \/media\/ {\n        alias \/path\/to\/your\/media\/files\/;\n    }\n}\n<\/code><\/pre>\n\n\n\n<p>\u3053\u306e\u4f8b\u3067\u306f\u3001Nginx\u306f\u30dd\u30fc\u30c880\u3067\u30ea\u30c3\u30b9\u30f3\u3057\u3001\u975e\u9759\u7684\u304a\u3088\u3073\u975e\u30e1\u30c7\u30a3\u30a2\u30d5\u30a1\u30a4\u30eb\u306e\u8981\u6c42\u3092\u30dd\u30fc\u30c88000\u3067\u5b9f\u884c\u3055\u308c\u3066\u3044\u308bDjango\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u30d7\u30ed\u30ad\u30b7\u3057\u307e\u3059\u3002 \u9759\u7684\u30d5\u30a1\u30a4\u30eb\u3068\u30e1\u30c7\u30a3\u30a2\u30d5\u30a1\u30a4\u30eb\u306fNginx\u306b\u3088\u3063\u3066\u76f4\u63a5\u51e6\u7406\u3055\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"4\">\n<li>\u9759\u7684\u30d5\u30a1\u30a4\u30eb\u306e\u53ce\u96c6\u3068\u6700\u9069\u5316<\/li>\n<\/ol>\n\n\n\n<p>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u8907\u6570\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u304c\u542b\u307e\u308c\u3066\u3044\u308b\u5834\u5408\u3001\u5404\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306f\u72ec\u81ea\u306e\u9759\u7684\u30d5\u30a1\u30a4\u30eb\u3092\u6301\u3064\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u672c\u756a\u74b0\u5883\u3067\u306e\u7ba1\u7406\u3068\u30b5\u30fc\u30d3\u30b9\u3092\u5bb9\u6613\u306b\u3059\u308b\u305f\u3081\u306b\u3053\u308c\u3089\u306e\u30d5\u30a1\u30a4\u30eb\u30921\u304b\u6240\u306b\u4e00\u5143\u5316\u3059\u308b\u306b\u306f\u3001Django\u306eadmin\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002<code>collectstatic<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">Copy code<code>python manage.py collectstatic\n<\/code><\/pre>\n\n\n\n<p>\u3053\u306e\u30b3\u30de\u30f3\u30c9\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u3059\u3079\u3066\u306e\u9759\u7684\u30d5\u30a1\u30a4\u30eb\u3092\u30d5\u30a1\u30a4\u30eb\u3067\u5b9a\u7fa9\u3055\u308c\u305f\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u30b3\u30d4\u30fc\u3057\u307e\u3059\u3002 \u305d\u306e\u5f8c\u3001\u3053\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u5185\u306e\u30d5\u30a1\u30a4\u30eb\u3092 Web \u30b5\u30fc\u30d0\u30fc\u307e\u305f\u306f CDN \u306b\u5c55\u958b\u3067\u304d\u307e\u3059\u3002<code>settings.py<\/code><code>STATIC_ROOT<\/code><\/p>\n\n\n\n<p>\u3055\u3089\u306b\u3001CSS \u30d5\u30a1\u30a4\u30eb\u3068 JavaScript \u30d5\u30a1\u30a4\u30eb\u306e\u30de\u30fc\u30b8\u3084\u5727\u7e2e\u306a\u3069\u3001\u904b\u7528\u74b0\u5883\u306e\u9759\u7684\u30d5\u30a1\u30a4\u30eb\u3092\u6700\u9069\u5316\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002 \u3053\u308c\u3089\u306e\u6a5f\u80fd\u306f\u3001django-compressor \u3084&nbsp;<a href=\"https:\/\/django-compressor.readthedocs.io\/en\/latest\/\">django-pipeline<\/a>&nbsp;\u306a\u3069\u306e\u30b5\u30fc\u30c9\u30d1\u30fc\u30c6\u30a3\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u4f7f\u7528\u3057\u3066\u5b9f\u88c5\u3067\u304d\u307e\u3059\u3002<a href=\"https:\/\/django-pipeline.readthedocs.io\/en\/latest\/\"><\/a><\/p>\n\n\n\n<p>\u4e0a\u8a18\u306b\u3088\u308a\u3001Django\u306e\u9759\u7684\u304a\u3088\u3073\u30e1\u30c7\u30a3\u30a2\u30d5\u30a1\u30a4\u30eb\u306e\u51e6\u7406\u3068\u672c\u756a\u74b0\u5883\u3067\u306e\u5c55\u958b\u306b\u3064\u3044\u3066\u3088\u308a\u6df1\u304f\u7406\u89e3\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u5fc5\u8981\u306b\u5fdc\u3058\u3066\u3001\u5b9f\u969b\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u3053\u308c\u3089\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u51e6\u7406\u304a\u3088\u3073\u914d\u7f6e\u3059\u308b\u305f\u3081\u306e\u9069\u5207\u306a\u65b9\u6cd5\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1610\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>Django\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u3068\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306e\u6700\u9069\u5316\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Django\u306f\u3001Web\u30b5\u30a4\u30c8\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3068\u5fdc\u7b54\u6027\u3092\u5411\u4e0a\u3055\u305b\u308b\u306e\u306b\u5f79\u7acb\u3064\u5f37\u529b\u306a\u30ad\u30e3\u30c3\u30b7\u30e5\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002 \u30ad\u30e3\u30c3\u30b7\u30e5\u306f\u3001\u4e00\u5b9a\u671f\u9593\u306e\u8a08\u7b97\u7d50\u679c\u3092\u4fdd\u5b58\u3057\u3066\u3001\u518d\u8a08\u7b97\u305b\u305a\u306b\u3059\u3070\u3084\u304f\u30a2\u30af\u30bb\u30b9\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b\u624b\u6cd5\u3067\u3059\u3002 \u6b21\u306b\u3001Django \u30ad\u30e3\u30c3\u30b7\u30e5\u306e\u57fa\u672c\u6982\u5ff5\u3068\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u6700\u9069\u5316\u3059\u308b\u65b9\u6cd5\u306b\u3064\u3044\u3066\u8aac\u660e\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Django \u30ad\u30e3\u30c3\u30b7\u30e5\u69cb\u6210<\/li>\n<\/ol>\n\n\n\n<p>\u307e\u305a\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30d5\u30a1\u30a4\u30eb\u3067\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u69cb\u6210\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u30ad\u30e3\u30c3\u30b7\u30e5 \u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3068\u3057\u3066\u30e1\u30e2\u30ea\u3092\u4f7f\u7528\u3059\u308b\u69cb\u6210\u306e\u4f8b\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<code>settings.py<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>CACHES = {\n    'default': {\n        'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',\n        'LOCATION': 'unique-snowflake',\n    }\n}\n<\/code><\/pre>\n\n\n\n<p>Django \u306f\u3001\u30a4\u30f3\u30e1\u30e2\u30ea\u30ad\u30e3\u30c3\u30b7\u30e5\u3001\u30d5\u30a1\u30a4\u30eb\u30ad\u30e3\u30c3\u30b7\u30e5\u3001Memcached\u3001Redis \u306a\u3069\u3001\u3055\u307e\u3056\u307e\u306a\u30ad\u30e3\u30c3\u30b7\u30e5\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002 \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30cb\u30fc\u30ba\u3068\u30ea\u30bd\u30fc\u30b9\u306b\u57fa\u3065\u3044\u3066\u9069\u5207\u306a\u30ad\u30e3\u30c3\u30b7\u30e5\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3092\u9078\u629e\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\">\n<li>\u30ad\u30e3\u30c3\u30b7\u30e5\u306e\u30ec\u30d9\u30eb<\/li>\n<\/ol>\n\n\n\n<p>Django \u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u306f\u3001\u6b21\u306e\u30ec\u30d9\u30eb\u306b\u5206\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30b0\u30ed\u30fc\u30d0\u30eb\u30ad\u30e3\u30c3\u30b7\u30e5:\u30b0\u30ed\u30fc\u30d0\u30eb\u30ad\u30e3\u30c3\u30b7\u30e5\u306f\u3001Web\u30b5\u30a4\u30c8\u5168\u4f53\u306e\u5fdc\u7b54\u7d50\u679c\u3092\u30ad\u30e3\u30c3\u30b7\u30e5\u306b\u4fdd\u5b58\u3059\u308b\u3053\u3068\u3067\u3059\u3002 \u30d5\u30a1\u30a4\u30eb\u5185\u306e \u3001\u3001\u304a\u3088\u3073\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u69cb\u6210\u3057\u3066\u3001\u30b0\u30ed\u30fc\u30d0\u30eb \u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u6709\u52b9\u306b\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u30b0\u30ed\u30fc\u30d0\u30eb\u30ad\u30e3\u30c3\u30b7\u30e5\u304c\u539f\u56e0\u3067\u4e00\u90e8\u306e\u52d5\u7684\u30b3\u30f3\u30c6\u30f3\u30c4\u304c\u6b63\u3057\u304f\u66f4\u65b0\u3055\u308c\u306a\u3044\u53ef\u80fd\u6027\u304c\u3042\u308b\u305f\u3081\u3001\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002<code>settings.py<\/code><code>CACHE_MIDDLEWARE_SECONDS<\/code><code>CACHE_MIDDLEWARE_KEY_PREFIX<\/code><code>CACHE_MIDDLEWARE_ALIAS<\/code><\/li>\n\n\n\n<li>\u30da\u30fc\u30b8 \u30ad\u30e3\u30c3\u30b7\u30e5: \u30da\u30fc\u30b8 \u30ad\u30e3\u30c3\u30b7\u30e5\u306f\u3001\u7279\u5b9a\u306e\u30d3\u30e5\u30fc\u306e\u5fdc\u7b54\u7d50\u679c\u3092\u30ad\u30e3\u30c3\u30b7\u30e5\u306b\u683c\u7d0d\u3057\u307e\u3059\u3002 \u30c7\u30b3\u30ec\u30fc\u30bf\u3092\u4f7f\u7528\u3057\u3066\u3001\u30da\u30fc\u30b8 \u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u5b9f\u88c5\u3067\u304d\u307e\u3059\u3002 \u4f8b: python\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc\u3059\u308b<code>cache_page<\/code><code>from django.views.decorators.cache import cache_page @cache_page(60 * 15) # \u7f13\u5b58 15 \u5206\u949f def my_view(request): # ...<\/code><\/li>\n\n\n\n<li>\u30d5\u30e9\u30b0\u30e1\u30f3\u30c8\u30ad\u30e3\u30c3\u30b7\u30e5: \u30d5\u30e9\u30b0\u30e1\u30f3\u30c8\u30ad\u30e3\u30c3\u30b7\u30e5\u3068\u306f\u3001\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u5185\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u306e\u4e00\u90e8\u3092\u30ad\u30e3\u30c3\u30b7\u30e5\u306b\u683c\u7d0d\u3059\u308b\u3053\u3068\u3067\u3059\u3002 \u30d5\u30e9\u30b0\u30e1\u30f3\u30c8\u30ad\u30e3\u30c3\u30b7\u30e5\u306f\u3001\u30bf\u30b0\u3092\u4f7f\u7528\u3057\u3066\u5b9f\u88c5\u3067\u304d\u307e\u3059\u3002 \u6b21\u306b\u4f8b\u3092\u793a\u3057\u307e\u3059\u3002 html\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc\u3059\u308b<code>{% cache %}<\/code><code>{% cache 600 some_identifier %} ... \u8981\u7f13\u5b58\u7684\u6a21\u677f\u7247\u6bb5 ... {% endcache %}<\/code><\/li>\n\n\n\n<li>\u30aa\u30d6\u30b8\u30a7\u30af\u30c8 \u30ad\u30e3\u30c3\u30b7\u30e5: \u30aa\u30d6\u30b8\u30a7\u30af\u30c8 \u30ad\u30e3\u30c3\u30b7\u30e5\u306f\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9 \u30af\u30a8\u30ea\u7d50\u679c\u307e\u305f\u306f\u305d\u306e\u4ed6\u306e\u8a08\u7b97\u7d50\u679c\u3092\u30ad\u30e3\u30c3\u30b7\u30e5\u306b\u683c\u7d0d\u3059\u308b\u3053\u3068\u3067\u3059\u3002 \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u306f\u3001Django \u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u4f7f\u7528\u3057\u3066\u5b9f\u88c5\u3067\u304d\u307e\u3059\u3002 \u4f8b: python\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc\u3059\u308b<code>cache<\/code><code>from django.core.cache import cache def expensive_calculation(): # ... \u4e00\u4e9b\u8017\u65f6\u7684\u8ba1\u7b97 ... result = cache.get('my_key') if result is None: result = expensive_calculation() cache.set('my_key', result, 600) # \u7f13\u5b58 10 \u5206\u949f<\/code><\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\" start=\"3\">\n<li>\u30ad\u30e3\u30c3\u30b7\u30e5\u306e\u7121\u52b9\u5316\u30dd\u30ea\u30b7\u30fc<\/li>\n<\/ol>\n\n\n\n<p>\u30ad\u30e3\u30c3\u30b7\u30e5\u7121\u52b9\u5316\u30dd\u30ea\u30b7\u30fc\u306f\u3001\u53e4\u304f\u306a\u3063\u305f\u30ad\u30e3\u30c3\u30b7\u30e5\u3055\u308c\u305f\u30c7\u30fc\u30bf\u3084\u4e0d\u8981\u306b\u306a\u3063\u305f\u30c7\u30fc\u30bf\u3092\u3044\u3064\u524a\u9664\u3059\u308b\u304b\u3092\u6c7a\u5b9a\u3059\u308b\u30dd\u30ea\u30b7\u30fc\u3067\u3059\u3002 \u4e00\u822c\u7684\u306a\u969c\u5bb3\u6226\u7565\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30bf\u30a4\u30e0\u30e9\u30d7\u30b9:<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1610\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u6642\u9593\u306e\u7121\u52b9\u5316: \u30ad\u30e3\u30c3\u30b7\u30e5\u3055\u308c\u305f\u30c7\u30fc\u30bf\u306f\u3001\u4e00\u5b9a\u671f\u9593\u5f8c\u306b\u81ea\u52d5\u7684\u306b\u7121\u52b9\u306b\u306a\u308a\u307e\u3059\u3002 \u3053\u308c\u306f\u6700\u3082\u4e00\u822c\u7684\u306a\u7121\u52b9\u5316\u6226\u7565\u3067\u3042\u308a\u3001\u30ad\u30e3\u30c3\u30b7\u30e5\u306e\u6709\u52b9\u671f\u9650\u3092\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3067\u5b9f\u73fe\u3067\u304d\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u4e0a\u8a18\u306e\u4f8b\u3067\u306f\u3001\u30da\u30fc\u30b8\u30ad\u30e3\u30c3\u30b7\u30e5\u3001\u30d5\u30e9\u30b0\u30e1\u30f3\u30c8\u30ad\u30e3\u30c3\u30b7\u30e5\u3001\u304a\u3088\u3073\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30ad\u30e3\u30c3\u30b7\u30e5\u306e\u6709\u52b9\u671f\u9650\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30a2\u30af\u30bb\u30b9\u306e\u7121\u52b9\u5316: \u30ad\u30e3\u30c3\u30b7\u30e5\u3055\u308c\u305f\u30c7\u30fc\u30bf\u304c\u9577\u671f\u9593\u30a2\u30af\u30bb\u30b9\u3055\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u3001\u30ad\u30e3\u30c3\u30b7\u30e5\u304b\u3089\u524a\u9664\u3055\u308c\u307e\u3059\u3002 \u3053\u306e\u6226\u7565\u306f\u3001Redis \u306a\u3069\u306e LRU(\u6700\u8fd1\u6700\u3082\u4f7f\u7528\u3055\u308c\u3066\u3044\u306a\u3044)\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3092\u30b5\u30dd\u30fc\u30c8\u3059\u308b\u4e00\u90e8\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u306b\u3088\u3063\u3066\u5b9f\u88c5\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30d0\u30fc\u30b8\u30e7\u30f3\u306e\u7121\u52b9\u5316: \u30c7\u30fc\u30bf\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u304c\u5909\u66f4\u3055\u308c\u305f\u3068\u304d\u306b\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u66f4\u65b0\u3057\u307e\u3059\u3002 \u3053\u308c\u306f\u3001Django \u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u4f7f\u7528\u3057\u3066\u5b9f\u73fe\u3067\u304d\u307e\u3059\u3002 \u4f8b: python\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc\u3059\u308b<code>cache_version<\/code><code>from django.core.cache import cache def expensive_calculation(): # ... \u4e00\u4e9b\u8017\u65f6\u7684\u8ba1\u7b97 ... version = cache.get('my_key_version') if version is None: version = 1 result = cache.get('my_key', version=version) if result is None: result = expensive_calculation() cache.set('my_key', result, version=version) cache.set('my_key_version', version + 1)<\/code><\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\" start=\"4\">\n<li>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306e\u6700\u9069\u5316<\/li>\n<\/ol>\n\n\n\n<p>\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u4f7f\u7528\u3059\u308b\u3060\u3051\u3067\u306a\u304f\u3001Django \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u6700\u9069\u5316\u3059\u308b\u65b9\u6cd5\u3082\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9 \u30af\u30a8\u30ea\u306e\u6700\u9069\u5316: \u3001\u3001\u304a\u3088\u3073\u305d\u306e\u4ed6\u306e\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9 \u30af\u30a8\u30ea\u306e\u6570\u3092\u6e1b\u3089\u3057\u307e\u3059\u3002<code>select_related<\/code><code>prefetch_related<\/code><\/li>\n\n\n\n<li>\u6539\u30da\u30fc\u30b8\u4f4d\u7f6e\u306e\u81ea\u52d5\u4fee\u6b63: \u5927\u91cf\u306e\u30c7\u30fc\u30bf\u3092\u542b\u3080\u30da\u30fc\u30b8\u3067\u306f\u3001\u30da\u30fc\u30b8\u30f3\u30b0\u3092\u4f7f\u7528\u3059\u308b\u3068\u5fdc\u7b54\u6027\u3092\u5411\u4e0a\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30df\u30c9\u30eb\u30a6\u30a7\u30a2\u306e\u6700\u9069\u5316:\u4e0d\u8981\u306a\u30df\u30c9\u30eb\u30a6\u30a7\u30a2\u3092\u524a\u9664\u3057\u3001\u4e0d\u8981\u306a\u51e6\u7406\u3092\u56de\u907f\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u6700\u9069\u5316:\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u8907\u96d1\u3055\u3092\u8efd\u6e1b\u3057\u3001\u904e\u5ea6\u306e\u30cd\u30b9\u30c8\u3068\u8a08\u7b97\u3092\u56de\u907f\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u9759\u7684\u30d5\u30a1\u30a4\u30eb\u306e\u6700\u9069\u5316: CSS \u30d5\u30a1\u30a4\u30eb\u3068 JavaScript \u30d5\u30a1\u30a4\u30eb\u3092\u30de\u30fc\u30b8\u304a\u3088\u3073\u5727\u7e2e\u3057\u3066\u3001HTTP \u8981\u6c42\u306e\u6570\u3092\u6e1b\u3089\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>CDN\u3092\u4f7f\u7528\u3059\u308b:\u30b3\u30f3\u30c6\u30f3\u30c4\u914d\u4fe1\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3092\u4f7f\u7528\u3057\u3066\u9759\u7684\u30d5\u30a1\u30a4\u30eb\u3092\u914d\u5e03\u3057\u3001\u30b5\u30fc\u30d0\u30fc\u306e\u8ca0\u8377\u3092\u8efd\u6e1b\u3057\u307e\u3059\u3002<\/li>\n<\/ul>\n\n\n\n<p>\u8981\u7d04\u3059\u308b\u3068\u3001Django\u306f\u8c4a\u5bcc\u306a\u30ad\u30e3\u30c3\u30b7\u30e5\u30aa\u30d7\u30b7\u30e7\u30f3\u3068\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6700\u9069\u5316\u65b9\u6cd5\u3092\u63d0\u4f9b\u3057\u3001Web\u30b5\u30a4\u30c8\u306e\u5fdc\u7b54\u6027\u3068\u30e6\u30fc\u30b6\u30fc\u30a8\u30af\u30b9\u30da\u30ea\u30a8\u30f3\u30b9\u3092\u5411\u4e0a\u3055\u305b\u308b\u306e\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002 \u5b9f\u969b\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306f\u3001\u7279\u5b9a\u306e\u30cb\u30fc\u30ba\u3068\u30b7\u30ca\u30ea\u30aa\u306b\u5fdc\u3058\u3066\u9069\u5207\u306a\u30ad\u30e3\u30c3\u30b7\u30e5\u6226\u7565\u3068\u6700\u9069\u5316\u624b\u6cd5\u3092\u9078\u629e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1610\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>Django RESTful API \u958b\u767a\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Django RESTful API \u958b\u767a\u3068\u306f\u3001\u4e00\u822c\u306b\u3001Django \u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3068 Django REST Framework (\u7565\u3057\u3066 DRF) \u3092\u4f7f\u7528\u3057\u3066 RESTful \u30b9\u30bf\u30a4\u30eb\u306e Web API \u3092\u4f5c\u6210\u3059\u308b\u3053\u3068\u3092\u6307\u3057\u307e\u3059\u3002 RESTful API \u306f\u3001GET\u3001POST\u3001PUT\u3001DELETE \u306a\u3069\u306e\u5358\u7d14\u306a HTTP \u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066 CRUD \u64cd\u4f5c (\u4f5c\u6210\u3001\u8aad\u307f\u53d6\u308a\u3001\u66f4\u65b0\u3001\u524a\u9664) \u3092\u5b9f\u884c\u3059\u308b HTTP \u30d7\u30ed\u30c8\u30b3\u30eb\u306b\u57fa\u3065\u304f\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2 \u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u306e\u30b9\u30bf\u30a4\u30eb\u3067\u3059\u3002<\/p>\n\n\n\n<p>Django RESTful API \u958b\u767a\u306e\u8a73\u7d30\u306a\u8aac\u660e\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Django REST \u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b<\/li>\n<\/ol>\n\n\n\n<p>\u307e\u305a\u3001Django REST \u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 pip\u3092\u4f7f\u7528\u3057\u3066\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">Copy code<code>pip install djangorestframework\n<\/code><\/pre>\n\n\n\n<p>\u6b21\u306b\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30d5\u30a1\u30a4\u30eb\u306e\u4e00\u89a7\u306b\u8ffd\u52a0\u3057\u307e\u3059\u3002<code>settings.py<\/code><code>'rest_framework'<\/code><code>INSTALLED_APPS<\/code><\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\">\n<li>\u30b7\u30ea\u30a2\u30e9\u30a4\u30b6\u30fc\u306e\u4f5c\u6210<\/li>\n<\/ol>\n\n\n\n<p>\u30b7\u30ea\u30a2\u30e9\u30a4\u30b6\u30fc\u306f\u3001\u30af\u30a8\u30ea\u7d50\u679c\u306a\u3069\u306e Django \u30e2\u30c7\u30eb\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u3001API \u3067\u8fd4\u3059\u305f\u3081\u306b JSON \u5f62\u5f0f\u306b\u5909\u63db\u3059\u308b\u5f79\u5272\u3092\u62c5\u3044\u307e\u3059\u3002 \u307e\u305f\u3001\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304b\u3089\u9001\u4fe1\u3055\u308c\u305f JSON \u30c7\u30fc\u30bf\u3092\u89e3\u6790\u3057\u3066\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u683c\u7d0d\u3059\u308b\u30e2\u30c7\u30eb\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306b\u683c\u7d0d\u3059\u308b\u5f79\u5272\u3082\u62c5\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u30b7\u30ea\u30a2\u30e9\u30a4\u30b6\u30fc\u3092\u4f5c\u6210\u3059\u308b\u306b\u306f\u3001\u307e\u305a\u30a2\u30d7\u30ea\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b \u3068\u3044\u3046\u540d\u524d\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u6b21\u306b\u3001API \u3067\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u30e2\u30c7\u30eb\u3054\u3068\u306b\u30b7\u30ea\u30a2\u30e9\u30a4\u30b6\u30fc \u30af\u30e9\u30b9\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002 \u4f8b\u3048\u3070\uff1a<code>serializers.py<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from rest_framework import serializers\nfrom .models import MyModel\n\nclass MyModelSerializer(serializers.ModelSerializer):\n    class Meta:\n        model = MyModel\n        fields = '__all__'  # \u4f7f\u7528\u6a21\u578b\u7684\u6240\u6709\u5b57\u6bb5\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"3\">\n<li>\u30d3\u30e5\u30fc\u306e\u4f5c\u6210<\/li>\n<\/ol>\n\n\n\n<p>\u30d3\u30e5\u30fc\u306f\u3001API \u8981\u6c42\u3092\u51e6\u7406\u3057\u3001\u5fdc\u7b54\u3092\u8fd4\u3059\u5f79\u5272\u3092\u62c5\u3044\u307e\u3059\u3002 Django REST \u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u306f\u3001\u6c4e\u7528\u30d3\u30e5\u30fc\u307e\u305f\u306f\u30d3\u30e5\u30fc\u30bb\u30c3\u30c8\u3092\u4f7f\u7528\u3057\u3066\u30d3\u30e5\u30fc\u306e\u4f5c\u6210\u3092\u7c21\u7565\u5316\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u6c4e\u7528\u30d3\u30e5\u30fc\u306e\u4f7f\u7528\u4f8b\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from rest_framework import generics\nfrom .models import MyModel\nfrom .serializers import MyModelSerializer\n\nclass MyModelListCreateView(generics.ListCreateAPIView):\n    queryset = MyModel.objects.all()\n    serializer_class = MyModelSerializer\n\nclass MyModelRetrieveUpdateDestroyView(generics.RetrieveUpdateDestroyAPIView):\n    queryset = MyModel.objects.all()\n    serializer_class = MyModelSerializer\n<\/code><\/pre>\n\n\n\n<p>\u3053\u3053\u3067\u306f\u3001MyModel \u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u4e00\u89a7\u8868\u793a\u304a\u3088\u3073\u4f5c\u6210\u3059\u308b\u30d3\u30e5\u30fc\u3068\u3001MyModel \u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u53d6\u5f97\u3001\u66f4\u65b0\u3001\u304a\u3088\u3073\u524a\u9664\u3059\u308b\u30d3\u30e5\u30fc\u306e 2 \u3064\u306e\u30d3\u30e5\u30fc\u304c\u4f5c\u6210\u3055\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"4\">\n<li>URL \u3092\u69cb\u6210\u3059\u308b<\/li>\n<\/ol>\n\n\n\n<p>\u5f93\u6765\u306e Django \u30d3\u30e5\u30fc\u3068\u540c\u69d8\u306b\u3001RESTful API \u30d3\u30e5\u30fc\u306e URL \u3092\u69cb\u6210\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u30a2\u30d7\u30ea\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b \u3068\u3044\u3046\u540d\u524d\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3057\u3001\u4ee5\u4e0b\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002<code>urls.py<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django.urls import path\nfrom .views import MyModelListCreateView, MyModelRetrieveUpdateDestroyView\n\nurlpatterns = [\n    path('mymodel\/', MyModelListCreateView.as_view(), name='mymodel_list_create'),\n    path('mymodel\/&lt;int:pk&gt;\/', MyModelRetrieveUpdateDestroyView.as_view(), name='mymodel_retrieve_update_destroy'),\n]\n<\/code><\/pre>\n\n\n\n<p>\u6b21\u306b\u3001\u30a2\u30d7\u30ea\u306e URL \u69cb\u6210\u3092\u53d6\u308a\u8fbc\u307f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30d5\u30a1\u30a4\u30eb\u306b\u542b\u3081\u307e\u3059\u3002<code>urls.py<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django.contrib import admin\nfrom django.urls import path, include\n\nurlpatterns = [\n    path('admin\/', admin.site.urls),\n    path('api\/', include('myapp.urls')),\n]\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"5\">\n<li>\u8a8d\u8a3c<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1610\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u6a29\u9650<\/p>\n\n\n\n<p>\u627f\u8a8d\u3055\u308c\u305f\u30e6\u30fc\u30b6\u30fc\u306e\u307f\u304c API \u306b\u30a2\u30af\u30bb\u30b9\u3057\u3066\u64cd\u4f5c\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b\u306b\u306f\u3001\u8a8d\u8a3c\u3068\u30a2\u30af\u30bb\u30b9\u8a31\u53ef\u3092\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 Django REST \u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306f\u3001\u57fa\u672c\u8a8d\u8a3c\u3001\u30bb\u30c3\u30b7\u30e7\u30f3\u8a8d\u8a3c\u3001\u30c8\u30fc\u30af\u30f3\u8a8d\u8a3c\u306a\u3069\u3001\u3055\u307e\u3056\u307e\u306a\u8a8d\u8a3c\u304a\u3088\u3073\u30a2\u30af\u30bb\u30b9\u8a31\u53ef\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u30c8\u30fc\u30af\u30f3\u8a8d\u8a3c\u3092\u8a2d\u5b9a\u3059\u308b\u65b9\u6cd5\u306e\u4f8b\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u307e\u305a\u3001\u4ee5\u4e0b\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002<code>djangorestframework_simplejwt<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">Copy code<code>pip install djangorestframework_simplejwt\n<\/code><\/pre>\n\n\n\n<p>\u6b21\u306b\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30d5\u30a1\u30a4\u30eb\u3067\u8a8d\u8a3c\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002<code>settings.py<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>REST_FRAMEWORK = {\n    'DEFAULT_AUTHENTICATION_CLASSES': [\n        'rest_framework_simplejwt.authentication.JWTAuthentication',\n    ],\n}\n<\/code><\/pre>\n\n\n\n<p>\u6b21\u306b\u3001JWT \u8a8d\u8a3c\u95a2\u9023\u306e URL \u3092\u69cb\u6210\u3057\u307e\u3059\u3002 \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30d5\u30a1\u30a4\u30eb\u306b\u4ee5\u4e0b\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002<code>urls.py<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django.urls import path, include\nfrom rest_framework_simplejwt.views import (\n    TokenObtainPairView,\n    TokenRefreshView,\n)\n\nurlpatterns = [\n    # ... \u5176\u4ed6 URL \u914d\u7f6e ...\n    path('api\/token\/', TokenObtainPairView.as_view(), name='token_obtain_pair'),\n    path('api\/token\/refresh\/', TokenRefreshView.as_view(), name='token_refresh'),\n]\n<\/code><\/pre>\n\n\n\n<p>\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306f\u3001\u30e6\u30fc\u30b6\u30fc\u540d\u3068\u30d1\u30b9\u30ef\u30fc\u30c9\u3092 URL \u306b\u9001\u4fe1\u3057\u3066 JWT \u30c8\u30fc\u30af\u30f3\u3092\u53d6\u5f97\u3057\u3001\u305d\u306e\u30c8\u30fc\u30af\u30f3\u3092\u4f7f\u7528\u3057\u3066\u8981\u6c42\u30d8\u30c3\u30c0\u30fc\u3067\u8a8d\u8a3c\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\u3002<code>api\/token\/<\/code><\/p>\n\n\n\n<p>\u6700\u5f8c\u306b\u3001\u30d3\u30e5\u30fc\u306e\u30a2\u30af\u30bb\u30b9\u8a31\u53ef\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001\u6b21\u306e\u30b3\u30fc\u30c9\u306f\u3001\u8a8d\u8a3c\u3055\u308c\u305f\u30e6\u30fc\u30b6\u30fc\u306e\u307f\u306b\u30a2\u30af\u30bb\u30b9\u3092\u5236\u9650\u3057\u307e\u3059\u3002<code>MyModelListCreateView<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from rest_framework import generics, permissions\nfrom .models import MyModel\nfrom .serializers import MyModelSerializer\n\nclass MyModelListCreateView(generics.ListCreateAPIView):\n    queryset = MyModel.objects.all()\n    serializer_class = MyModelSerializer\n    permission_classes = [permissions.IsAuthenticated]  # \u8bbe\u7f6e\u6743\u9650\n<\/code><\/pre>\n\n\n\n<p>\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u3001(\u7ba1\u7406\u8005\u30e6\u30fc\u30b6\u30fc\u306e\u307f)\u3001(\u8a8d\u8a3c\u3055\u308c\u305f\u30e6\u30fc\u30b6\u30fc\u3001\u8aad\u307f\u53d6\u308a\u5c02\u7528\u8981\u6c42) \u306a\u3069\u3001\u30d3\u30e5\u30fc\u3054\u3068\u306b\u7570\u306a\u308b\u30a2\u30af\u30bb\u30b9\u8a31\u53ef\u3092\u8a2d\u5b9a\u3067\u304d\u307e\u3059\u3002<code>permissions.IsAdminUser<\/code><code>permissions.IsAuthenticatedOrReadOnly<\/code><\/p>\n\n\n\n<p>\u8981\u7d04\u3059\u308b\u3068\u3001Django REST \u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306b\u306f\u3001RESTful API \u3092\u3059\u3070\u3084\u304f\u4f5c\u6210\u304a\u3088\u3073\u4fdd\u5b88\u3059\u308b\u306e\u306b\u5f79\u7acb\u3064\u8c4a\u5bcc\u306a\u6a5f\u80fd\u3068\u30aa\u30d7\u30b7\u30e7\u30f3\u304c\u7528\u610f\u3055\u308c\u3066\u3044\u307e\u3059\u3002 \u5b9f\u969b\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306f\u3001\u30cb\u30fc\u30ba\u3068\u30b7\u30ca\u30ea\u30aa\u306b\u57fa\u3065\u3044\u3066\u3001\u30d3\u30b8\u30cd\u30b9 \u30cb\u30fc\u30ba\u3092\u6e80\u305f\u3059\u9069\u5207\u306a\u8a8d\u8a3c\u3001\u30a2\u30af\u30bb\u30b9\u8a31\u53ef\u3001\u30b7\u30ea\u30a2\u30e9\u30a4\u30b6\u30fc\u3001\u304a\u3088\u3073\u30d3\u30e5\u30fc\u3092\u9078\u629e\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1610\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>Django\u306e\u30c7\u30d7\u30ed\u30a4\u3068\u30ea\u30ea\u30fc\u30b9\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Django \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u958b\u767a\u304c\u5b8c\u4e86\u3057\u305f\u3089\u3001\u30e6\u30fc\u30b6\u30fc\u304c\u30a2\u30af\u30bb\u30b9\u3067\u304d\u308b\u3088\u3046\u306b\u672c\u756a\u74b0\u5883\u306b\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u4ee5\u4e0b\u3067\u306f\u3001Django \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30c7\u30d7\u30ed\u30a4\u3068\u30ea\u30ea\u30fc\u30b9\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u6e96\u5099\u3059\u308b<\/li>\n<\/ol>\n\n\n\n<p>\u307e\u305a\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u5185\u306e\u3059\u3079\u3066\u306e\u9759\u7684\u30d5\u30a1\u30a4\u30eb\u304c 1 \u3064\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u53ce\u96c6\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002 \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30d5\u30a1\u30a4\u30eb\u3067\u8a2d\u5b9a\u3057\u3001\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002<code>settings.py<\/code><code>STATIC_ROOT<\/code><code>python manage.py collectstatic<\/code><\/p>\n\n\n\n<p>\u307e\u305f\u3001 \u306a\u3069\u306e\u5b9f\u7a3c\u50cd\u74b0\u5883\u7528\u306e\u69cb\u6210\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3057\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3001\u30ad\u30e3\u30c3\u30b7\u30e5\u3001\u30ed\u30b0\u306a\u3069\u306e\u5b9f\u7a3c\u50cd\u74b0\u5883\u306b\u5fc5\u8981\u306a\u8a2d\u5b9a\u3092\u69cb\u6210\u3059\u308b\u5fc5\u8981\u3082\u3042\u308a\u307e\u3059\u3002<code>settings_production.py<\/code><\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\">\n<li>\u5c55\u958b\u65b9\u6cd5\u3092\u9078\u629e\u3059\u308b<\/li>\n<\/ol>\n\n\n\n<p>Django\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306f\u3001\u5f93\u6765\u306e\u30b5\u30fc\u30d0\u30fc\u3001\u30af\u30e9\u30a6\u30c9\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3001\u30b3\u30f3\u30c6\u30ca\u306a\u3069\u3001\u3055\u307e\u3056\u307e\u306a\u65b9\u6cd5\u3067\u30c7\u30d7\u30ed\u30a4\u3067\u304d\u307e\u3059\u3002 \u4e00\u822c\u7684\u306a\u5c55\u958b\u65b9\u6cd5\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30a6\u30a7\u30d6\u30b5\u30fc\u30d0(\u4f8b:Apache\u3001Nginx)\u3068WSGI\u30b5\u30fc\u30d0(\u4f8b:Gunicorn\u3001uWSGI)\u3092\u4f7f\u7528\u3059\u308b<\/li>\n\n\n\n<li>\u30af\u30e9\u30a6\u30c9\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0(AWS\u3001Google Cloud\u3001Heroku\u306a\u3069)\u3092\u4f7f\u7528\u3059\u308b<\/li>\n\n\n\n<li>\u30b3\u30f3\u30c6\u30ca\u30c6\u30af\u30ce\u30ed\u30b8\u30fc(Docker\u3001Kubernetes\u306a\u3069)\u3092\u4f7f\u7528\u3059\u308b<\/li>\n<\/ul>\n\n\n\n<p>\u9069\u5207\u306a\u5c55\u958b\u65b9\u6cd5\u306e\u9078\u629e\u306f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u898f\u6a21\u3001\u4e88\u7b97\u3001\u904b\u7528\u4e0a\u306e\u30cb\u30fc\u30ba\u306a\u3069\u306e\u8981\u56e0\u306b\u3088\u3063\u3066\u7570\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"3\">\n<li>\u30a6\u30a7\u30d6\u30b5\u30fc\u30d0\u30fc\u3068WSGI\u30b5\u30fc\u30d0\u30fc\u3092\u69cb\u6210\u3059\u308b<\/li>\n<\/ol>\n\n\n\n<p>Django\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306f\u901a\u5e38\u3001\u9759\u7684\u30d5\u30a1\u30a4\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u3068\u30ea\u30d0\u30fc\u30b9\u30d7\u30ed\u30ad\u30b7\u3092\u51e6\u7406\u3059\u308b\u305f\u3081\u306bWeb\u30b5\u30fc\u30d0\u30fc(Nginx\u306a\u3069)\u3092\u4f7f\u7528\u3057\u3001Django\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u5b9f\u884c\u3059\u308b\u305f\u3081\u306bWSGI\u30b5\u30fc\u30d0\u30fc(Gunicorn\u306a\u3069)\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002 \u7c21\u5358\u306aNginx\u3068Gunicorn\u306e\u8a2d\u5b9a\u4f8b\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30b0\u30cb\u30b3\u30fc\u30f3\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb:\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc\u3059\u308b<code>pip install gunicorn<\/code><\/li>\n\n\n\n<li>\u30b0\u30cb\u30b3\u30fc\u30f3\u3092\u5b9f\u884c\u3059\u308b:bash\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc<code>gunicorn myproject.wsgi:application --bind 0.0.0.0:8000<\/code><\/li>\n\n\n\n<li>Nginx:bashCopy\u30b3\u30fc\u30c9\u3001\u5834\u6240\u304c\u9759\u7684\u30d5\u30a1\u30a4\u30eb\u8981\u6c42\u3092\u51e6\u7406\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u308bNginx\u69cb\u6210\u30d5\u30a1\u30a4\u30eb\u3092\u69cb\u6210\u3057\u3001\u4ed6\u306e\u8981\u6c42\u306fGunicorn\u30b5\u30fc\u30d0\u30fc\u306b\u30ea\u30d0\u30fc\u30b9\u30d7\u30ed\u30ad\u30b7\u3055\u308c\u307e\u3059\u3002<code>server { listen 80; server_name example.com; location \/static\/ { alias \/path\/to\/static\/files\/; } location \/ { proxy_pass http:\/\/0.0.0.0:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }&nbsp;<\/code><code>\/static\/<\/code><\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\" start=\"4\">\n<li>SSL \u8a3c\u660e\u66f8\u3092\u69cb\u6210\u3059\u308b<\/li>\n<\/ol>\n\n\n\n<p>\u30e6\u30fc\u30b6\u30fc\u30c7\u30fc\u30bf\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u3092\u78ba\u4fdd\u3057\u3001\u691c\u7d22\u30a8\u30f3\u30b8\u30f3\u306e\u30e9\u30f3\u30ad\u30f3\u30b0\u3092\u5411\u4e0a\u3055\u305b\u308b\u305f\u3081\u306b\u3001Web\u30b5\u30a4\u30c8\u3067HTTPS\u3092\u6709\u52b9\u306b\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002 \u8a8d\u8a3c\u5c40(CA)\u304b\u3089SSL\u8a3c\u660e\u66f8\u3092\u8cfc\u5165\u3059\u308b\u304b\u3001\u7121\u6599\u306eLet&#8217;s Encrypt\u8a3c\u660e\u66f8\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p>HTTP\u30ea\u30af\u30a8\u30b9\u30c8\u3092HTTPS\u306b\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3059\u308b\u3088\u3046\u306bNginx\u3067SSL\u8a3c\u660e\u66f8\u3092\u69cb\u6210\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">nginxCopy code<code>server {\n    listen 80;\n    server_name example.com;\n    return 301 https:\/\/$host$request_uri;\n}\n\nserver {\n    listen 443 ssl;\n    server_name example.com;\n\n    ssl_certificate \/path\/to\/ssl_certificate.crt;\n    ssl_certificate_key \/path\/to\/ssl_certificate.key;\n\n    # ... \u5176\u4ed6 Nginx \u914d\u7f6e ...\n}\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"5\">\n<li>\u5c55\u958b<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1610\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3068\u4f9d\u5b58\u95a2\u4fc2<\/p>\n\n\n\n<p>\u904b\u7528\u74b0\u5883\u3067\u306f\u3001\u9069\u5207\u306a\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9 \u30b5\u30fc\u30d0\u30fc (PostgreSQL\u3001MySQL\u3001MariaDB \u306a\u3069) \u304c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3001\u69cb\u6210\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002 \u30d5\u30a1\u30a4\u30eb\u5185\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u69cb\u6210\u306b\u57fa\u3065\u3044\u3066\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u4f5c\u6210\u3057\u3001\u79fb\u884c\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002<code>settings_production.py<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">cssCopy code<code>python manage.py migrate --settings=myproject.settings_production\n<\/code><\/pre>\n\n\n\n<p>\u307e\u305f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u5fc5\u8981\u306a\u3059\u3079\u3066\u306e Python \u30e9\u30a4\u30d6\u30e9\u30ea\u304c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002 \u306e\u30d5\u30a1\u30a4\u30eb \u3068\u30d7\u30ed\u30b8\u30a7\u30af\u30c8 \u30eb\u30fc\u30c8\u3092\u4f7f\u7528\u3057\u3066\u3001\u4ee5\u4e0b\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3067\u304d\u307e\u3059\u3002<code>pip<\/code><code>requirements.txt<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">Copy code<code>pip install -r requirements.txt\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"6\">\n<li>\u8d77\u52d5\u3068\u76e3\u8996<\/li>\n<\/ol>\n\n\n\n<p>Web \u30b5\u30fc\u30d0\u30fc\u3001WSGI \u30b5\u30fc\u30d0\u30fc\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9 \u30b5\u30fc\u30d0\u30fc\u306a\u3069\u3001\u95a2\u9023\u3059\u308b\u3059\u3079\u3066\u306e\u30b5\u30fc\u30d3\u30b9\u304c\u958b\u59cb\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002 systemd\u3001supervisord\u3001PM2\u306a\u3069\u306e\u30d7\u30ed\u30bb\u30b9\u7ba1\u7406\u30c4\u30fc\u30eb\u3092\u4f7f\u7528\u3057\u3066\u3001\u3053\u308c\u3089\u306e\u30b5\u30fc\u30d3\u30b9\u3092\u76e3\u8996\u3057\u3001\u30af\u30e9\u30c3\u30b7\u30e5\u304c\u767a\u751f\u3057\u305f\u5834\u5408\u306b\u81ea\u52d5\u7684\u306b\u518d\u8d77\u52d5\u3059\u308b\u3088\u3046\u306b\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u904b\u7528\u3092\u76e3\u8996\u304a\u3088\u3073\u5206\u6790\u3059\u308b\u3053\u3068\u306f\u3001\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306e\u30dc\u30c8\u30eb\u30cd\u30c3\u30af\u306e\u7279\u5b9a\u3001\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\u3001\u304a\u3088\u3073\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306b\u3068\u3063\u3066\u91cd\u8981\u3067\u3059\u3002 \u6b21\u306e\u30c4\u30fc\u30eb\u3068\u65b9\u6cd5\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30ed\u30b0: \u5206\u6790\u3068\u30a2\u30fc\u30ab\u30a4\u30d6\u3092\u5bb9\u6613\u306b\u3059\u308b\u305f\u3081\u306b\u3001\u30ed\u30b0\u3092\u4e2d\u592e\u306e\u5834\u6240\u306b\u9001\u4fe1\u3059\u308b\u3088\u3046\u306b Django \u3068 Web \u30b5\u30fc\u30d0\u30fc\u3092\u69cb\u6210\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30e2\u30cb\u30bf\u30ea\u30f3\u30b0\u30c4\u30fc\u30eb: New Relic\u3001Datadog\u3001Prometheus \u306a\u3069\u306e\u30e2\u30cb\u30bf\u30ea\u30f3\u30b0\u30c4\u30fc\u30eb\u3092\u4f7f\u7528\u3057\u3066\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u30e1\u30c8\u30ea\u30af\u30b9\u3092\u53ce\u96c6\u3057\u3066\u5206\u6790\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30a8\u30e9\u30fc\u8ffd\u8de1: Sentry\u3084Rollbar\u306a\u3069\u306e\u30a8\u30e9\u30fc\u8ffd\u8de1\u30b5\u30fc\u30d3\u30b9\u3092\u4f7f\u7528\u3057\u3066\u3001\u30e9\u30f3\u30bf\u30a4\u30e0\u30a8\u30e9\u30fc\u3092\u30ad\u30e3\u30c3\u30c1\u3057\u3001\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u306e\u901a\u77e5\u3092\u53d7\u4fe1\u3057\u307e\u3059\u3002<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\" start=\"7\">\n<li>\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u3068\u30ea\u30ab\u30d0\u30ea<\/li>\n<\/ol>\n\n\n\n<p>\u30c7\u30fc\u30bf\u306e\u640d\u5931\u3084\u30b7\u30b9\u30c6\u30e0\u306e\u30af\u30e9\u30c3\u30b7\u30e5\u3092\u9632\u3050\u306b\u306f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u5b9a\u671f\u7684\u306b\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u3057\u3066\u304f\u3060\u3055\u3044\u3002 \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3001\u9759\u7684\u30d5\u30a1\u30a4\u30eb\u3001\u30e1\u30c7\u30a3\u30a2 \u30d5\u30a1\u30a4\u30eb\u3001\u304a\u3088\u3073\u30b3\u30fc\u30c9\u3092\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u3057\u305f\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002 \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u30c4\u30fc\u30eb\u3001rsync\u3001AWS S3 \u306a\u3069\u306e\u81ea\u52d5\u5316\u30c4\u30fc\u30eb\u3092\u4f7f\u7528\u3057\u3066\u3001\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u30d7\u30ed\u30bb\u30b9\u3092\u7c21\u7d20\u5316\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u7dca\u6025\u6642\u306b\u30b7\u30b9\u30c6\u30e0\u3092\u8fc5\u901f\u306b\u5fa9\u65e7\u3059\u308b\u306b\u306f\u3001\u5fa9\u65e7\u8a08\u753b\u3092\u78ba\u7acb\u3057\u3066\u30c6\u30b9\u30c8\u3057\u307e\u3059\u3002 \u3053\u308c\u306b\u306f\u3001\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u304b\u3089\u306e\u30c7\u30fc\u30bf\u306e\u5fa9\u5143\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u518d\u30c7\u30d7\u30ed\u30a4\u3001\u307e\u305f\u306f\u65b0\u3057\u3044\u30b5\u30fc\u30d0\u30fc\u3078\u306e\u79fb\u884c\u304c\u542b\u307e\u308c\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u8981\u7d04\u3059\u308b\u3068\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u6e96\u5099\u3001\u914d\u7f6e\u65b9\u6cd5\u306e\u9078\u629e\u3001\u30b5\u30fc\u30d0\u30fc\u69cb\u6210\u3001SSL \u8a3c\u660e\u66f8\u3001\u4f9d\u5b58\u95a2\u4fc2\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3001\u30b5\u30fc\u30d3\u30b9\u306e\u76e3\u8996\u3001\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u3068\u56de\u5fa9\u306a\u3069\u3001Django \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u30c7\u30d7\u30ed\u30a4\u3057\u3066\u767a\u884c\u3059\u308b\u3068\u304d\u306b\u8003\u616e\u3059\u3079\u304d\u3044\u304f\u3064\u304b\u306e\u5074\u9762\u304c\u3042\u308a\u307e\u3059\u3002 \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u7279\u5b9a\u306e\u30cb\u30fc\u30ba\u3068\u30b5\u30a4\u30ba\u306b\u57fa\u3065\u3044\u3066\u9069\u5207\u306a\u5c55\u958b\u6226\u7565\u3092\u9078\u629e\u3057\u3001\u30b7\u30b9\u30c6\u30e0\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u3068\u5b89\u5b9a\u6027\u3092\u4fdd\u8b77\u3059\u308b\u305f\u3081\u306e\u9069\u5207\u306a\u5bfe\u7b56\u304c\u8b1b\u3058\u3089\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1610\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>Django\u306e\u5b9f\u8df5\u7684\u306a\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30b1\u30fc\u30b9\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u8981\u4ef6\u5206\u6790\u3068\u8a2d\u8a08\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u3053\u306e\u4f8b\u3067\u306f\u3001\u30e6\u30fc\u30b6\u30fc\u304c\u8a18\u4e8b\u3092\u6295\u7a3f\u3001\u95b2\u89a7\u3001\u30b3\u30e1\u30f3\u30c8\u3067\u304d\u308b\u30b7\u30f3\u30d7\u30eb\u306a\u30d6\u30ed\u30b0 \u30b7\u30b9\u30c6\u30e0\u3092\u958b\u767a\u3057\u307e\u3059\u3002 \u4ee5\u4e0b\u306f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u8981\u4ef6\u306e\u5206\u6790\u3068\u8a2d\u8a08\u306e\u8a73\u7d30\u306a\u8aac\u660e\u3067\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u8981\u4ef6\u5206\u6790<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30e6\u30fc\u30b6\u30fc\u306f\u30b5\u30a4\u30f3\u30a2\u30c3\u30d7\u3057\u3066\u30ed\u30b0\u30a4\u30f3\u3067\u304d\u307e\u3059<\/li>\n\n\n\n<li>\u30e6\u30fc\u30b6\u30fc\u306f\u8a18\u4e8b\u3092\u4f5c\u6210\u3001\u7de8\u96c6\u3001\u524a\u9664\u3067\u304d\u307e\u3059<\/li>\n\n\n\n<li>\u30e6\u30fc\u30b6\u30fc\u306f\u4ed6\u306e\u30e6\u30fc\u30b6\u30fc\u306e\u6295\u7a3f\u3092\u95b2\u89a7\u3067\u304d\u307e\u3059<\/li>\n\n\n\n<li>\u30e6\u30fc\u30b6\u30fc\u306f\u8a18\u4e8b\u306b\u30b3\u30e1\u30f3\u30c8\u3067\u304d\u307e\u3059<\/li>\n\n\n\n<li>\u7ba1\u7406\u8005\u306f\u3059\u3079\u3066\u306e\u6295\u7a3f\u3068\u30b3\u30e1\u30f3\u30c8\u3092\u7ba1\u7406\u3067\u304d\u307e\u3059<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\">\n<li>\u8003\u3048\u51fa\u3059<\/li>\n<\/ol>\n\n\n\n<p>\u8981\u4ef6\u5206\u6790\u306b\u57fa\u3065\u3044\u3066\u3001\u4ee5\u4e0b\u306e\u30c7\u30fc\u30bf\u30e2\u30c7\u30eb\u3092\u8a2d\u8a08\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30e6\u30fc\u30b6\u30fc (Django \u306e\u30cd\u30a4\u30c6\u30a3\u30d6 \u30e6\u30fc\u30b6\u30fc \u30e2\u30c7\u30eb)<\/li>\n\n\n\n<li>\u8a18\u4e8b\n<ul class=\"wp-block-list\">\n<li>\u30bf\u30a4\u30c8\u30eb<\/li>\n\n\n\n<li>\u30b3\u30f3\u30c6\u30f3\u30c4<\/li>\n\n\n\n<li>\u767a\u58f2\u65e5(publication_date)<\/li>\n\n\n\n<li>\u4f5c\u6210\u8005 (\u4f5c\u6210\u8005\u3001\u30e6\u30fc\u30b6\u30fc\u3078\u306e\u5916\u90e8\u30ad\u30fc)<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>\u30b3\u30e1\u30f3\u30c8\n<ul class=\"wp-block-list\">\n<li>\u30b3\u30f3\u30c6\u30f3\u30c4<\/li>\n\n\n\n<li>\u767a\u58f2\u65e5(publication_date)<\/li>\n\n\n\n<li>\u30b3\u30e1\u30f3\u30c8\u6295\u7a3f\u8005 (\u30e6\u30fc\u30b6\u30fc\u3078\u306e\u5916\u90e8\u30ad\u30fc)<\/li>\n\n\n\n<li>\u8a18\u4e8b(\u8a18\u4e8b\u3001\u8a18\u4e8b\u3078\u306e\u5916\u90e8\u30ad\u30fc)<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\" start=\"3\">\n<li>\u30d3\u30e5\u30fc\u3068 URL \u306e\u30c7\u30b6\u30a4\u30f3<\/li>\n<\/ol>\n\n\n\n<p>\u8981\u4ef6\u5206\u6790\u306b\u57fa\u3065\u3044\u3066\u3001\u6b21\u306e\u30d3\u30e5\u30fc\u304c\u5fc5\u8981\u3067\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30e6\u30fc\u30b6\u30fc\u767b\u9332\u3068\u30ed\u30b0\u30a4\u30f3(Django\u306e\u7d44\u307f\u8fbc\u307f\u8a8d\u8a3c\u30b7\u30b9\u30c6\u30e0\u3092\u4f7f\u7528)<\/li>\n\n\n\n<li>\u8a18\u4e8b\u306e\u30d3\u30e5\u30fc\u3092\u4f5c\u6210\u3001\u7de8\u96c6\u3001\u304a\u3088\u3073\u524a\u9664\u3059\u308b (\u8a18\u4e8b\u30d3\u30e5\u30fc\u306e\u4f5c\u6210\u3001\u8a18\u4e8b\u30d3\u30e5\u30fc\u306e\u66f4\u65b0\u3001\u8a18\u4e8b\u30d3\u30e5\u30fc\u306e\u524a\u9664)<\/li>\n\n\n\n<li>ArticleListView (ArticleListView, ArticleDetailView)<\/li>\n\n\n\n<li>\u30b3\u30e1\u30f3\u30c8\u306e\u30d3\u30e5\u30fc\u3092\u4f5c\u6210\u304a\u3088\u3073\u524a\u9664\u3059\u308b (\u30b3\u30e1\u30f3\u30c8\u30d3\u30e5\u30fc\u306e\u4f5c\u6210\u3001\u30b3\u30e1\u30f3\u30c8\u30d3\u30e5\u30fc\u306e\u524a\u9664)<\/li>\n\n\n\n<li>\u7ba1\u7406\u8005 (Django \u306e\u30cd\u30a4\u30c6\u30a3\u30d6\u7ba1\u7406\u30b7\u30b9\u30c6\u30e0\u3092\u4f7f\u7528)<\/li>\n<\/ul>\n\n\n\n<p>\u5bfe\u5fdc\u3059\u308b URL \u30c7\u30b6\u30a4\u30f3\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>\/register\/<\/code>&nbsp;\u2013 \u30e6\u30fc\u30b6\u30fc\u767b\u9332<\/li>\n\n\n\n<li><code>\/login\/<\/code>&nbsp;\u2013 \u30e6\u30fc\u30b6\u30fc\u30ed\u30b0\u30a4\u30f3<\/li>\n\n\n\n<li><code>\/logout\/<\/code>&nbsp;\u2013 \u30e6\u30fc\u30b6\u30fc\u304c\u30ed\u30b0\u30a2\u30a6\u30c8\u3059\u308b<\/li>\n\n\n\n<li><code>\/articles\/<\/code>&nbsp;\u2013 \u8a18\u4e8b\u4e00\u89a7<\/li>\n\n\n\n<li><code>\/articles\/create\/<\/code>&nbsp;\u2013 \u8a18\u4e8b\u3092\u4f5c\u6210\u3059\u308b<\/li>\n\n\n\n<li><code>\/articles\/&lt;article_id&gt;\/<\/code>&nbsp;\u2013 \u8a18\u4e8b\u306e\u8a73\u7d30<\/li>\n\n\n\n<li><code>\/articles\/&lt;article_id&gt;\/update\/<\/code>&nbsp;\u2013 \u8a18\u4e8b\u306e\u7de8\u96c6<\/li>\n\n\n\n<li><code>\/articles\/&lt;article_id&gt;\/delete\/<\/code>&nbsp;\u2013 \u8a18\u4e8b\u3092\u524a\u9664\u3059\u308b<\/li>\n\n\n\n<li><code>\/articles\/&lt;article_id&gt;\/comments\/create\/<\/code>&nbsp;\u2013\u30b3\u30e1\u30f3\u30c8\u3092\u4f5c\u6210\u3059\u308b<\/li>\n\n\n\n<li><code>\/articles\/&lt;article_id&gt;\/comments\/&lt;comment_id&gt;\/delete\/<\/code>&nbsp;\u2013 \u30b3\u30e1\u30f3\u30c8\u306e\u524a\u9664<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\" start=\"4\">\n<li>\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3068\u30d5\u30ed\u30f3\u30c8\u30a8\u30f3\u30c9\u8a2d\u8a08<\/li>\n<\/ol>\n\n\n\n<p>\u30d3\u30e5\u30fc\u3068 URL \u306e\u8a2d\u8a08\u306b\u57fa\u3065\u3044\u3066\u3001\u6b21\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30d9\u30fc\u30b9\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8(\u30d9\u30fc\u30b9.html):\u30da\u30fc\u30b8\u306e\u57fa\u672c\u69cb\u9020\u3068\u30ca\u30d3\u30b2\u30fc\u30b7\u30e7\u30f3\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059<\/li>\n\n\n\n<li>\u767b\u9332\u304a\u3088\u3073\u30ed\u30b0\u30a4\u30f3\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8 (\u767b\u9332.html\u3001\u30ed\u30b0\u30a4\u30f3.html)<\/li>\n\n\n\n<li>\u8a18\u4e8b\u30ea\u30b9\u30c8\u3068\u8a73\u7d30\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8 (article_list.html\u3001article_detail.html)<\/li>\n\n\n\n<li>\u8a18\u4e8b\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u4f5c\u6210\u3001\u7de8\u96c6\u3001\u524a\u9664 (article_form.html)<\/li>\n\n\n\n<li>\u30b3\u30e1\u30f3\u30c8\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u4f5c\u6210\u3068\u524a\u9664 (comment_form.html)<\/li>\n<\/ul>\n\n\n\n<p>\u30d5\u30ed\u30f3\u30c8\u30a8\u30f3\u30c9\u306e\u8a2d\u8a08\u3067\u306f\u3001\u5fc5\u8981\u306b\u5fdc\u3058\u3066 HTML\u3001CSS\u3001\u304a\u3088\u3073 JavaScript \u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002 \u30d6\u30fc\u30c8\u30b9\u30c8\u30e9\u30c3\u30d7\u307e\u305f\u306f\u305d\u306e\u4ed6\u306e\u30d5\u30ed\u30f3\u30c8\u30a8\u30f3\u30c9\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3092\u4f7f\u7528\u3057\u3066\u3001\u958b\u767a\u30d7\u30ed\u30bb\u30b9\u3092\u7c21\u7d20\u5316\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u8981\u7d04\u3059\u308b\u3068\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u8981\u4ef6\u5206\u6790\u306b\u57fa\u3065\u3044\u3066\u3001\u30c7\u30fc\u30bf \u30e2\u30c7\u30eb\u3001\u30d3\u30e5\u30fc\u3001URL\u3001\u304a\u3088\u3073\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u8a2d\u8a08\u3057\u307e\u3057\u305f\u3002 \u6b21\u306b\u3001\u3053\u308c\u3089\u306e\u8a2d\u8a08\u306e\u5b9f\u88c5\u3068\u30d6\u30ed\u30b0\u30b7\u30b9\u30c6\u30e0\u306e\u958b\u767a\u3092\u958b\u59cb\u3067\u304d\u307e\u3059\u3002 \u5b9f\u969b\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306f\u3001\u8981\u4ef6\u306e\u5206\u6790\u3068\u8a2d\u8a08\u304c\u3088\u308a\u8907\u96d1\u306b\u306a\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u304c\u3001\u3053\u306e\u4f8b\u306f\u3001\u8981\u4ef6\u304b\u3089 Django \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u8a2d\u8a08\u65b9\u6cd5\u3092\u7406\u89e3\u3059\u308b\u306e\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1610\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>Django\u306e\u5b9f\u8df5\u7684\u306a\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30b1\u30fc\u30b9\u958b\u767a\u30d7\u30ed\u30bb\u30b9\u306e\u30c7\u30e2\u30f3\u30b9\u30c8\u30ec\u30fc\u30b7\u30e7\u30f3\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Django \u3092\u4f7f\u3063\u3066\u7c21\u5358\u306a\u30d6\u30ed\u30b0\u30b7\u30b9\u30c6\u30e0\u3092\u958b\u767a\u3059\u308b\u30d7\u30ed\u30bb\u30b9\u306e\u30c7\u30e2\u3067\u3059:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3068\u30a2\u30d7\u30ea\u3092\u4f5c\u6210\u3059\u308b<\/li>\n<\/ol>\n\n\n\n<p>\u307e\u305a\u3001\u65b0\u3057\u3044 Django \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3068\u3001 \u3068\u3044\u3046\u540d\u524d\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<code>blog<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">bashCopy code<code>django-admin startproject myblog\ncd myblog\npython manage.py startapp blog\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\">\n<li>\u30c7\u30fc\u30bf \u30e2\u30c7\u30eb\u3092\u5b9a\u7fa9\u3059\u308b<\/li>\n<\/ol>\n\n\n\n<p>\u30d5\u30a1\u30a4\u30eb\u5185\u306e\u8a18\u4e8b\u30e2\u30c7\u30eb\u3068\u30b3\u30e1\u30f3\u30c8 \u30e2\u30c7\u30eb\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002<code>blog\/models.py<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django.db import models\nfrom django.contrib.auth.models import User\n\nclass Article(models.Model):\n    title = models.CharField(max_length=255)\n    content = models.TextField()\n    publication_date = models.DateTimeField(auto_now_add=True)\n    author = models.ForeignKey(User, on_delete=models.CASCADE)\n\n    def __str__(self):\n        return self.title\n\nclass Comment(models.Model):\n    content = models.TextField()\n    publication_date = models.DateTimeField(auto_now_add=True)\n    commenter = models.ForeignKey(User, on_delete=models.CASCADE)\n    article = models.ForeignKey(Article, on_delete=models.CASCADE)\n\n    def __str__(self):\n        return f\"{self.commenter.username} - {self.article.title}\"\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"3\">\n<li>\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u79fb\u884c<\/li>\n<\/ol>\n\n\n\n<p>\u79fb\u884c\u3092\u5b9f\u884c\u3057\u3066\u3001\u65b0\u3057\u304f\u5b9a\u7fa9\u3057\u305f\u30e2\u30c7\u30eb\u3092\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u9069\u7528\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">Copy code<code>python manage.py makemigrations\npython manage.py migrate\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"4\">\n<li>\u30e2\u30c7\u30eb\u3092\u7ba1\u7406\u8005\u306e\u30d0\u30c3\u30af\u30b0\u30e9\u30a6\u30f3\u30c9\u306b\u767b\u9332\u3059\u308b<\/li>\n<\/ol>\n\n\n\n<p>\u30e2\u30c7\u30eb\u3092\u30d5\u30a1\u30a4\u30eb\u306b\u767b\u9332\u3057\u3066\u3001Django \u7ba1\u7406\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30a4\u30b9\u3067\u6295\u7a3f\u3068\u30b3\u30e1\u30f3\u30c8\u3092\u7ba1\u7406\u3057\u307e\u3059\u3002<code>blog\/admin.py<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django.contrib import admin\nfrom .models import Article, Comment\n\nadmin.site.register(Article)\nadmin.site.register(Comment)\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"5\">\n<li>\u30d3\u30e5\u30fc\u3068 URL \u3092\u4f5c\u6210\u3059\u308b<\/li>\n<\/ol>\n\n\n\n<p>\u30d5\u30a1\u30a4\u30eb\u306b\u30d3\u30e5\u30fc\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002 \u30b9\u30da\u30fc\u30b9\u306e\u5236\u9650\u306b\u3088\u308a\u3001\u3053\u3053\u3067\u306f\u8a18\u4e8b\u30ea\u30b9\u30c8\u3068\u8a73\u7d30\u30d3\u30e5\u30fc\u306e\u4f5c\u6210\u306e\u307f\u3092\u793a\u3057\u307e\u3059\u3002<code>blog\/views.py<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django.shortcuts import render, get_object_or_404\nfrom .models import Article\n\ndef article_list(request):\n    articles = Article.objects.all().order_by('-publication_date')\n    return render(request, 'blog\/article_list.html', {'articles': articles})\n\ndef article_detail(request, article_id):\n    article = get_object_or_404(Article, pk=article_id)\n    return render(request, 'blog\/article_detail.html', {'article': article})\n<\/code><\/pre>\n\n\n\n<p>\u30d5\u30a1\u30a4\u30eb\u5185\u306e URL \u3092\u69cb\u6210\u3057\u307e\u3059\u3002<code>blog\/urls.py<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django.urls import path\nfrom . import views\n\nurlpatterns = [\n    path('articles\/', views.article_list, name='article_list'),\n    path('articles\/&lt;int:article_id&gt;\/', views.article_detail, name='article_detail'),\n]\n<\/code><\/pre>\n\n\n\n<p>\u30a2\u30d7\u30ea\u306e URL \u69cb\u6210\u3092\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30d5\u30a1\u30a4\u30eb\u306b\u542b\u3081\u307e\u3059\u3002<code>myblog\/urls.py<\/code><code>blog<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django.contrib import admin\nfrom django.urls import path, include\n\nurlpatterns = [\n    path('admin\/', admin.site.urls),\n    path('', include('blog.urls')),\n]\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"6\">\n<li>\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u4f5c\u6210\u3059\u308b<\/li>\n<\/ol>\n\n\n\n<p>\u76ee\u6b21\u306e\u4e0b\u306b\u8a18\u4e8b\u3068\u8a73\u7d30\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u30ea\u30b9\u30c8\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<code>blog\/templates\/blog<\/code><\/p>\n\n\n\n<p><code>article_list.html<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">htmlCopy code<code>{% for article in articles %}\n  &lt;h2&gt;&lt;a href=\"{% url 'article_detail' article.id %}\"&gt;{{ article.title }}&lt;\/a&gt;&lt;\/h2&gt;\n  &lt;p&gt;{{ article.content|truncatewords:30 }}&lt;\/p&gt;\n  &lt;p&gt;{{ article.publication_date }}&lt;\/p&gt;\n{% endfor %}\n<\/code><\/pre>\n\n\n\n<p><code>article_detail.html<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">htmlCopy code<code>&lt;h1&gt;{{ article.title }}&lt;\/h1&gt;\n&lt;p&gt;{{ article.content }}&lt;\/p&gt;\n&lt;p&gt;{{ article.publication_date }}&lt;\/p&gt;\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"7\">\n<li>\u30e6\u30fc\u30b6\u30fc\u8a8d\u8a3c\u3068\u305d\u306e\u4ed6\u306e\u30d3\u30e5\u30fc<\/li>\n<\/ol>\n\n\n\n<p>\u5e73\u7136<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1610\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u30b9\u30da\u30fc\u30b9\u306e\u5236\u9650\u306b\u3088\u308a\u3001\u3053\u3053\u3067\u306f\u30e6\u30fc\u30b6\u30fc\u767b\u9332\u30d3\u30e5\u30fc\u306e\u4f5c\u6210\u306e\u307f\u3092\u793a\u3057\u307e\u3059\u3002 \u5b9f\u969b\u306e\u958b\u767a\u6642\u306b\u306f\u3001\u30ed\u30b0\u30a4\u30f3\u3001\u30ed\u30b0\u30a2\u30a6\u30c8\u3001\u304a\u3088\u3073\u305d\u306e\u4ed6\u306e\u6a5f\u80fd\u3082\u5b9f\u88c5\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u30d5\u30a1\u30a4\u30eb\u306b\u30e6\u30fc\u30b6\u30fc\u767b\u9332\u30d3\u30e5\u30fc\u3092\u4f5c\u6210\u3059\u308b\u306b\u306f:<code>blog\/views.py<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django.contrib.auth.forms import UserCreationForm\nfrom django.contrib.auth import login\nfrom django.shortcuts import render, redirect\n\ndef register(request):\n    if request.method == 'POST':\n        form = UserCreationForm(request.POST)\n        if form.is_valid():\n            user = form.save()\n            login(request, user)\n            return redirect('article_list')\n    else:\n        form = UserCreationForm()\n    return render(request, 'blog\/register.html', {'form': form})\n<\/code><\/pre>\n\n\n\n<p>\u30d5\u30a1\u30a4\u30eb\u306b\u767b\u9332 URL \u3092\u69cb\u6210\u3057\u307e\u3059\u3002<code>blog\/urls.py<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pythonCopy code<code>from django.urls import path\nfrom . import views\n\nurlpatterns = [\n    # ...\u5176\u4ed6 URL \u914d\u7f6e...\n    path('register\/', views.register, name='register'),\n]\n<\/code><\/pre>\n\n\n\n<p>\u30e6\u30fc\u30b6\u30fc\u767b\u9332\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u4f5c\u6210\u3059\u308b\u306b\u306f:<code>register.html<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">htmlCopy code<code>{% if form.errors %}\n  &lt;ul&gt;\n    {% for error in form.errors.values %}\n      &lt;li&gt;{{ error|first }}&lt;\/li&gt;\n    {% endfor %}\n  &lt;\/ul&gt;\n{% endif %}\n\n&lt;form method=\"post\"&gt;\n  {% csrf_token %}\n  {{ form.as_p }}\n  &lt;button type=\"submit\"&gt;\u6ce8\u518c&lt;\/button&gt;\n&lt;\/form&gt;\n<\/code><\/pre>\n\n\n\n<p>\u5b9f\u969b\u306e\u958b\u767a\u30d7\u30ed\u30bb\u30b9\u3067\u306f\u3001\u30ed\u30b0\u30a4\u30f3\u3001\u30ed\u30b0\u30a2\u30a6\u30c8\u3001\u8a18\u4e8b\u306e\u4f5c\u6210\u3001\u8a18\u4e8b\u306e\u7de8\u96c6\u3001\u8a18\u4e8b\u306e\u524a\u9664\u3001\u30b3\u30e1\u30f3\u30c8\u306e\u4f5c\u6210\u3001\u30b3\u30e1\u30f3\u30c8\u306e\u524a\u9664\u306a\u3069\u306e\u4ed6\u306e\u6a5f\u80fd\u3082\u5b9f\u88c5\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u30b9\u30da\u30fc\u30b9\u306e\u5236\u9650\u306b\u3088\u308a\u3001\u3053\u3053\u3067\u3053\u308c\u3089\u306e\u6a5f\u80fd\u3092\u5b9f\u88c5\u3059\u308b\u65b9\u6cd5\u3092\u8a73\u3057\u304f\u8aac\u660e\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 \u305f\u3060\u3057\u3001\u30cb\u30fc\u30ba\u306e\u5206\u6790\u3068\u8a2d\u8a08\u306b\u5fdc\u3058\u3066\u3001\u540c\u69d8\u306e\u30a2\u30d7\u30ed\u30fc\u30c1\u3092\u4f7f\u7528\u3057\u3066\u3053\u308c\u3089\u306e\u6a5f\u80fd\u3092\u5b9f\u73fe\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"8\">\n<li>\u5c55\u958b<\/li>\n<\/ol>\n\n\n\n<p>\u958b\u767a\u304c\u5b8c\u4e86\u3057\u305f\u3089\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u904b\u7528\u74b0\u5883\u306b\u914d\u7f6e\u3057\u307e\u3059\u3002 \u914d\u7f6e\u65b9\u6cd5\u306f\u3001\u9078\u629e\u3057\u305f\u30b5\u30fc\u30d0\u30fc\u3068\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u3088\u3063\u3066\u7570\u306a\u308a\u307e\u3059\u3002 \u3053\u3053\u306b\u3044\u304f\u3064\u304b\u306e\u91cd\u8981\u306a\u30b9\u30c6\u30c3\u30d7\u304c\u3042\u308a\u307e\u3059:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u672c\u756a\u74b0\u5883\u306e\u8a2d\u5b9a(\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u63a5\u7d9a\u3001\u9759\u7684\u30d5\u30a1\u30a4\u30eb\u8a2d\u5b9a\u306a\u3069)\u3092\u69cb\u6210\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u4f9d\u5b58\u95a2\u4fc2\u3092\u8a2d\u5b9a\u3059\u308b<\/li>\n\n\n\n<li>\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u79fb\u884c\u3092\u5b9f\u884c\u3059\u308b<\/li>\n\n\n\n<li>\u30a6\u30a7\u30d6\u30b5\u30fc\u30d0\u30fc\u3068WSGI\u30b5\u30fc\u30d0\u30fc\u3092\u69cb\u6210\u3059\u308b<\/li>\n\n\n\n<li>\u9759\u7684\u30d5\u30a1\u30a4\u30eb\u3068\u30e1\u30c7\u30a3\u30a2 \u30d5\u30a1\u30a4\u30eb\u306e\u5c55\u958b<\/li>\n\n\n\n<li>\u30b5\u30fc\u30d3\u30b9\u306e\u958b\u59cb\u3068\u76e3\u8996<\/li>\n<\/ul>\n\n\n\n<p>\u8981\u7d04\u3059\u308b\u3068\u3001\u3053\u306e\u4f8b\u306f\u3001Django \u3092\u4f7f\u7528\u3057\u3066\u5358\u7d14\u306a\u30d6\u30ed\u30b0\u30b7\u30b9\u30c6\u30e0\u3092\u958b\u767a\u3059\u308b\u65b9\u6cd5\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002 \u5b9f\u969b\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306f\u3001\u8981\u4ef6\u306e\u5206\u6790\u3068\u8a2d\u8a08\u306b\u3088\u3063\u3066\u306f\u3001\u3088\u308a\u591a\u304f\u306e\u6a5f\u80fd\u3092\u5b9f\u88c5\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002 \u3055\u3089\u306b\u3001\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u3001\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306e\u6700\u9069\u5316\u3001\u304a\u3088\u3073\u305d\u306e\u4ed6\u306e\u8981\u56e0\u3092\u8003\u616e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u3053\u306e\u4f8b\u306f\u3001Django \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u958b\u767a\u30d7\u30ed\u30bb\u30b9\u3092\u7406\u89e3\u3057\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u57fa\u672c\u7684\u306a\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3092\u63d0\u4f9b\u3059\u308b\u306e\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1610\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u6982\u8981\u3068\u6539\u5584\u70b9\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u958b\u767a\u304c\u5b8c\u4e86\u3057\u3001\u4e00\u5b9a\u671f\u9593\u904b\u7528\u3055\u308c\u305f\u5f8c\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u8981\u7d04\u3057\u3066\u6539\u5584\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002 \u3053\u308c\u306f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u9577\u6240\u3068\u77ed\u6240\u3092\u7406\u89e3\u3057\u3001\u6f5c\u5728\u7684\u306a\u554f\u984c\u3092\u7279\u5b9a\u3057\u3001\u305d\u308c\u306b\u5fdc\u3058\u3066\u89e3\u6c7a\u7b56\u3092\u958b\u767a\u3059\u308b\u306e\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002 \u4ee5\u4e0b\u306f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u6982\u8981\u3068\u6539\u5584\u306e\u8a73\u7d30\u306a\u8aac\u660e\u3067\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u6982\u8981<\/li>\n<\/ol>\n\n\n\n<p>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u6982\u8981\u306b\u306f\u3001\u4e3b\u306b\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u5168\u4f53\u7684\u306a\u8a55\u4fa1\u3068\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30d7\u30ed\u30bb\u30b9\u306e\u3055\u307e\u3056\u307e\u306a\u6bb5\u968e\u306e\u30ec\u30d3\u30e5\u30fc\u304c\u542b\u307e\u308c\u307e\u3059\u3002 \u5177\u4f53\u7684\u306b\u306f\u3001\u4ee5\u4e0b\u306e\u5074\u9762\u304b\u3089\u8981\u7d04\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u76ee\u6a19: \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u671f\u5f85\u3055\u308c\u308b\u76ee\u6a19\u304c\u9054\u6210\u3055\u308c\u305f\u304b\u3069\u3046\u304b\u3001\u304a\u3088\u3073\u671f\u5f85\u304b\u3089\u306e\u9038\u8131\u304c\u3042\u308b\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u8981\u4ef6: \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u8981\u4ef6\u304c\u6e80\u305f\u3055\u308c\u3066\u3044\u308b\u304b\u3069\u3046\u304b\u3001\u304a\u3088\u3073\u8981\u4ef6\u304c\u3069\u306e\u3088\u3046\u306b\u5909\u66f4\u3055\u308c\u305f\u304b\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u958b\u767a\u30d7\u30ed\u30bb\u30b9:\u958b\u767a\u30d7\u30ed\u30bb\u30b9\u306b\u304a\u3051\u308b\u6280\u8853\u7684\u306a\u9078\u629e\u3001\u958b\u767a\u30d7\u30ed\u30bb\u30b9\u3001\u30b3\u30df\u30e5\u30cb\u30b1\u30fc\u30b7\u30e7\u30f3\u3001\u30b3\u30e9\u30dc\u30ec\u30fc\u30b7\u30e7\u30f3\u3092\u78ba\u8a8d\u3057\u3001\u6539\u5584\u3059\u3079\u304d\u9818\u57df\u304c\u3042\u308b\u304b\u3069\u3046\u304b\u3092\u5206\u6790\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30c6\u30b9\u30c8\u3068\u54c1\u8cea: \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30c6\u30b9\u30c8 \u30d7\u30ed\u30bb\u30b9\u3068\u3001\u30d0\u30b0\u3001\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3001\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306a\u3069\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u7a3c\u50cd\u5f8c\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u54c1\u8cea\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u5c55\u958b\u3068O&amp;M: \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u5c55\u958b\u30d7\u30ed\u30bb\u30b9\u3001O&amp;M\u30d7\u30ed\u30bb\u30b9\u3001\u554f\u984c\u3068\u8ab2\u984c\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\">\n<li>\u6539\u5584<\/li>\n<\/ol>\n\n\n\n<p>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u6982\u8981\u306e\u7d50\u679c\u306b\u57fa\u3065\u3044\u3066\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u3055\u307e\u3056\u307e\u306a\u5074\u9762\u3092\u6539\u5584\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u3053\u3053\u306b\u3044\u304f\u3064\u304b\u306e\u63d0\u6848\u304c\u3042\u308a\u307e\u3059:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u8981\u4ef6\u5206\u6790: \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u8981\u4ef6\u304c\u4e0d\u660e\u78ba\u307e\u305f\u306f\u983b\u7e41\u306b\u5909\u66f4\u3055\u308c\u308b\u5834\u5408\u306f\u3001\u8981\u4ef6\u5206\u6790\u3068\u7ba1\u7406\u30d7\u30ed\u30bb\u30b9\u3092\u6539\u5584\u3057\u3066\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u958b\u59cb\u6642\u306b\u8981\u4ef6\u304c\u3088\u308a\u660e\u78ba\u3067\u7406\u89e3\u3057\u3084\u3059\u3044\u3088\u3046\u306b\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30c6\u30af\u30ce\u30ed\u30b8\u30fc\u306e\u9078\u629e:\u4e00\u90e8\u306e\u30c6\u30af\u30ce\u30ed\u30b8\u30fc\u304c\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u4e2d\u306b\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30cb\u30fc\u30ba\u306b\u9069\u3057\u3066\u3044\u306a\u3044\u3053\u3068\u304c\u5224\u660e\u3057\u305f\u5834\u5408\u306f\u3001\u30c6\u30af\u30ce\u30ed\u30b8\u30fc\u3092\u7f6e\u304d\u63db\u3048\u308b\u304b\u3001\u65b0\u3057\u3044\u30c6\u30af\u30ce\u30ed\u30b8\u30fc\u30bd\u30ea\u30e5\u30fc\u30b7\u30e7\u30f3\u3092\u5c0e\u5165\u3059\u308b\u3053\u3068\u3092\u691c\u8a0e\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u958b\u767a\u30d7\u30ed\u30bb\u30b9:\u958b\u767a\u30d7\u30ed\u30bb\u30b9\u306e\u554f\u984c\u306b\u5fdc\u3058\u3066\u3001\u30a2\u30b8\u30e3\u30a4\u30eb\u958b\u767a\u624b\u6cd5\u306e\u5c0e\u5165\u3001\u30b3\u30fc\u30c9\u30ec\u30d3\u30e5\u30fc\u30d7\u30ed\u30bb\u30b9\u306e\u6539\u5584\u3001\u7d99\u7d9a\u7684\u30a4\u30f3\u30c6\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3\/\u7d99\u7d9a\u7684\u30c7\u30d7\u30ed\u30a4(CI \/ CD)\u306e\u6700\u9069\u5316\u306a\u3069\u3001\u958b\u767a\u30d7\u30ed\u30bb\u30b9\u3092\u6539\u5584\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30c6\u30b9\u30c8\u3068\u54c1\u8cea:\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u54c1\u8cea\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306b\u5fdc\u3058\u3066\u3001\u81ea\u52d5\u30c6\u30b9\u30c8\u3001\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u30c6\u30b9\u30c8\u3001\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30c6\u30b9\u30c8\u306a\u3069\u3092\u5c0e\u5165\u3057\u3066\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u54c1\u8cea\u3092\u5411\u4e0a\u3055\u305b\u308b\u306a\u3069\u3001\u30c6\u30b9\u30c8\u6226\u7565\u3068\u65b9\u6cd5\u3092\u6539\u5584\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u5c55\u958b\u3068 O&amp;M: \u5c55\u958b\u3068 O&amp;M \u30d7\u30ed\u30bb\u30b9\u3067\u767a\u751f\u3057\u305f\u554f\u984c\u306b\u3064\u3044\u3066\u306f\u3001\u5c55\u958b\u30d7\u30ed\u30bb\u30b9\u3092\u6700\u9069\u5316\u3057\u3001\u81ea\u52d5\u5c55\u958b\u30c4\u30fc\u30eb\u3092\u5c0e\u5165\u3057\u3001\u76e3\u8996\u3068\u30a2\u30e9\u30fc\u30e0\u306e\u30e1\u30ab\u30cb\u30ba\u30e0\u3092\u6539\u5584\u3067\u304d\u307e\u3059\u3002<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\" start=\"3\">\n<li>\u7d99\u7d9a\u7684\u6539\u5584<\/li>\n<\/ol>\n\n\n\n<p>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u6539\u5584\u306f\u7d99\u7d9a\u7684\u306a\u30d7\u30ed\u30bb\u30b9\u3067\u3059\u3002 \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u904b\u7528\u4e2d\u306f\u3001\u554f\u984c\u3092\u7279\u5b9a\u3057\u3001\u30bf\u30a4\u30e0\u30ea\u30fc\u306b\u89e3\u6c7a\u7b56\u3092\u7b56\u5b9a\u3059\u308b\u305f\u3081\u306b\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u6982\u8981\u3092\u5b9a\u671f\u7684\u306b\u5b9f\u884c\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u3055\u3089\u306b\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u54c1\u8cea\u3092\u7d99\u7d9a\u7684\u306b\u5411\u4e0a\u3055\u305b\u308b\u305f\u3081\u306b\u3001\u4ed6\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u6210\u529f\u7d4c\u9a13\u304b\u3089\u5b66\u3076\u3060\u3051\u3067\u306a\u304f\u3001\u65b0\u3057\u3044\u30c6\u30af\u30ce\u30ed\u30b8\u30fc\u3084\u65b9\u6cd5\u306b\u7126\u70b9\u3092\u5f53\u3066\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/edu.ujhb.org\/?p=1610\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>GitHub\u4e0a\u306e\u3044\u304f\u3064\u304b\u306e\u7d20\u6674\u3089\u3057\u3044Django\u30d9\u30fc\u30b9\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306f\u4f55\u3067\u3059\u304b<\/p>\n\n\n\n<p>GitHub \u306b\u306f\u3001Django \u306e\u4f7f\u7528\u65b9\u6cd5\u3068\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u3092\u3088\u308a\u3088\u304f\u7406\u89e3\u3059\u308b\u306e\u306b\u5f79\u7acb\u3064\u512a\u308c\u305f Django \u30d9\u30fc\u30b9\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304c\u591a\u6570\u3042\u308a\u307e\u3059\u3002 \u6ce8\u76ee\u3059\u3079\u304dDjango\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><a href=\"https:\/\/github.com\/encode\/django-rest-framework\">Django REST<\/a>&nbsp;\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af: Django \u4e0a\u306b\u69cb\u7bc9\u3055\u308c\u305f\u5f37\u529b\u3067\u67d4\u8edf\u306a Web API \u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u3001RESTful API \u3092\u8fc5\u901f\u306b\u69cb\u7bc9\u3059\u308b\u306e\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002<\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/wagtail\/wagtail\">Wagtail<\/a>:Django\u306b\u57fa\u3065\u304f\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u7ba1\u7406\u30b7\u30b9\u30c6\u30e0(CMS)\u3067\u3001\u3055\u307e\u3056\u307e\u306aWeb\u30b5\u30a4\u30c8\u3084\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u4f7f\u3044\u3084\u3059\u304f\u3001\u67d4\u8edf\u6027\u304c\u3042\u308a\u3001\u62e1\u5f35\u53ef\u80fd\u3067\u3059\u3002<\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/mirumee\/saleor\">Saleor<\/a>:Django\u3068GraphQL\u306b\u57fa\u3065\u304f\u9ad8\u6027\u80fde\u30b3\u30de\u30fc\u30b9\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3067\u3001\u6700\u65b0\u306e\u30aa\u30f3\u30e9\u30a4\u30f3\u30b9\u30c8\u30a2\u3092\u69cb\u7bc9\u3059\u308b\u305f\u3081\u306e\u8c4a\u5bcc\u306a\u6a5f\u80fd\u3068\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/taigaio\/taiga-back\">Taiga<\/a>:\u30a2\u30b8\u30e3\u30a4\u30eb\u958b\u767a\u30c1\u30fc\u30e0\u5411\u3051\u306b\u8a2d\u8a08\u3055\u308c\u305fDjango\u30d9\u30fc\u30b9\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u7ba1\u7406\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3067\u3001\u8981\u4ef6\u7ba1\u7406\u3001\u30bf\u30b9\u30af\u7ba1\u7406\u3001\u9032\u6357\u8ffd\u8de1\u306a\u3069\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/rafalp\/misago\">Misago<\/a>:\u30ec\u30b9\u30dd\u30f3\u30b7\u30d6\u30c7\u30b6\u30a4\u30f3\u3001\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u901a\u77e5\u3001\u30e6\u30fc\u30b6\u30fc\u8a8d\u8a3c\u306a\u3069\u3092\u30b5\u30dd\u30fc\u30c8\u3059\u308bDjango\u4e0a\u306b\u69cb\u7bc9\u3055\u308c\u305f\u6700\u65b0\u306e\u30d5\u30eb\u6a5f\u80fd\u306e\u30d5\u30a9\u30fc\u30e9\u30e0\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3002<\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/zulip\/zulip\">Zulip<\/a>:Django\u3092\u30d9\u30fc\u30b9\u306b\u3057\u305f\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e\u30c1\u30e3\u30c3\u30c8\u30a2\u30d7\u30ea\u3067\u3001\u30c1\u30fc\u30e0\u306e\u30b3\u30e9\u30dc\u30ec\u30fc\u30b7\u30e7\u30f3\u3068\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u30b3\u30df\u30e5\u30cb\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u305f\u3081\u306e\u30af\u30ed\u30b9\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u30b5\u30dd\u30fc\u30c8\u3068\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u540c\u671f\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>Django-oscar:\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u53ef\u80fd\u3067\u62e1\u5f35\u53ef\u80fd\u306ae\u30b3\u30de\u30fc\u30b9\u30bd\u30ea\u30e5\u30fc\u30b7\u30e7\u30f3\u3092\u63d0\u4f9b\u3059\u308b<a href=\"https:\/\/github.com\/django-oscar\/django-oscar\">Django<\/a>\u306b\u57fa\u3065\u304f\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306ee\u30b3\u30de\u30fc\u30b9\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3002<\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/django-cms\/django-cms\">Django-cms:Django<\/a>\u3092\u30d9\u30fc\u30b9\u306b\u3057\u305f\u4f7f\u3044\u3084\u3059\u304f\u30b9\u30b1\u30fc\u30e9\u30d6\u30eb\u306a\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u30b3\u30f3\u30c6\u30f3\u30c4\u7ba1\u7406\u30b7\u30b9\u30c6\u30e0\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306f\u3001Django\u306e\u4f7f\u7528\u65b9\u6cd5\u3068\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u3092\u3088\u308a\u3088\u304f\u7406\u89e3\u3059\u308b\u305f\u3081\u306e\u8cb4\u91cd\u306a\u5b66\u7fd2\u30ea\u30bd\u30fc\u30b9\u3068\u30a4\u30f3\u30b9\u30d4\u30ec\u30fc\u30b7\u30e7\u30f3\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002 \u3053\u308c\u3089\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u7814\u7a76\u3059\u308b\u3068\u304d\u306f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30e9\u30a4\u30bb\u30f3\u30b9\u3001\u6d3b\u52d5\u3001\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u306e\u30b5\u30dd\u30fc\u30c8\u306a\u3069\u306e\u8981\u7d20\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>IT\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u306e\u30d3\u30c7\u30aa\u3092\u3084\u308a\u305f\u3044\u306e\u3067 &hellip; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_mi_skip_tracking":false,"footnotes":""},"categories":[23],"tags":[],"class_list":["post-1619","post","type-post","status-publish","format-standard","hentry","category-material"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/edu.ujhb.org\/index.php?rest_route=\/wp\/v2\/posts\/1619","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/edu.ujhb.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/edu.ujhb.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/edu.ujhb.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/edu.ujhb.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1619"}],"version-history":[{"count":1,"href":"https:\/\/edu.ujhb.org\/index.php?rest_route=\/wp\/v2\/posts\/1619\/revisions"}],"predecessor-version":[{"id":1620,"href":"https:\/\/edu.ujhb.org\/index.php?rest_route=\/wp\/v2\/posts\/1619\/revisions\/1620"}],"wp:attachment":[{"href":"https:\/\/edu.ujhb.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1619"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/edu.ujhb.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1619"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/edu.ujhb.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1619"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}