{"id":5655,"date":"2025-11-16T17:00:52","date_gmt":"2025-11-16T13:30:52","guid":{"rendered":"https:\/\/parmin.cloud\/blog\/?p=5655"},"modified":"2025-11-17T13:08:18","modified_gmt":"2025-11-17T09:38:18","slug":"%d9%be%d8%b3%d8%aa-%d8%ac%d8%af%db%8c%d8%af","status":"publish","type":"post","link":"https:\/\/parmin.cloud\/blog\/%d9%be%d8%b3%d8%aa-%d8%ac%d8%af%db%8c%d8%af\/","title":{"rendered":"\u0686\u06af\u0648\u0646\u0647 \u0627\u0632 \u067e\u0627\u06cc\u06af\u0627\u0647\u200c\u062f\u0627\u062f\u0647\u0654 PostgreSQL \u062f\u0631 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647\u0654 Flask \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645\u061f"},"content":{"rendered":"<p>\u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc \u0648\u0628\u060c \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0628\u0647 \u06cc\u06a9 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u062f \u06a9\u0647 \u0645\u062c\u0645\u0648\u0639\u0647\u200c\u06cc \u0633\u0627\u0632\u0645\u0627\u0646\u200c\u06cc\u0627\u0641\u062a\u0647\u200c\u0627\u06cc \u0627\u0632 \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u0633\u062a. \u0627\u0632 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0628\u0631\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0648 \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc \u067e\u0627\u06cc\u062f\u0627\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646 \u0622\u0646\u200c\u0647\u0627 \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u0645\u0624\u062b\u0631 \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u0648 \u062f\u0633\u062a\u06a9\u0627\u0631\u06cc \u06a9\u0631\u062f. \u0628\u0631\u0627\u06cc \u0645\u062b\u0627\u0644\u060c \u062f\u0631 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u06cc \u0634\u0628\u06a9\u0647 \u0627\u062c\u062a\u0645\u0627\u0639\u06cc\u060c \u0634\u0645\u0627 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647\u200c\u0627\u06cc \u062f\u0627\u0631\u06cc\u062f \u06a9\u0647 \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 (\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0634\u062e\u0635\u06cc\u060c \u067e\u0633\u062a\u200c\u0647\u0627\u060c \u06a9\u0627\u0645\u0646\u062a\u200c\u0647\u0627\u060c \u062f\u0646\u0628\u0627\u0644\u200c\u06a9\u0646\u0646\u062f\u06af\u0627\u0646) \u0631\u0627 \u0628\u0647 \u06af\u0648\u0646\u0647\u200c\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f \u06a9\u0647 \u0628\u062a\u0648\u0627\u0646 \u0622\u0646\u200c\u0647\u0627 \u0631\u0627 \u0628\u0647 \u0637\u0648\u0631 \u0645\u0624\u062b\u0631 \u067e\u0631\u062f\u0627\u0632\u0634 \u06a9\u0631\u062f. \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u062f\u0627\u062f\u0647\u200c\u0647\u0627 \u0631\u0627 \u0628\u0647 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f\u060c \u0622\u0646\u200c\u0647\u0627 \u0631\u0627 \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc\u060c \u0627\u0635\u0644\u0627\u062d \u06cc\u0627 \u062d\u0630\u0641 \u06a9\u0646\u06cc\u062f\u060c \u0628\u0633\u062a\u06af\u06cc \u0628\u0647 \u0646\u06cc\u0627\u0632\u0647\u0627 \u0648 \u0634\u0631\u0627\u06cc\u0637 \u0645\u062e\u062a\u0644\u0641 \u062f\u0627\u0631\u062f. \u062f\u0631 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0648\u0628\u060c \u0627\u06cc\u0646 \u0646\u06cc\u0627\u0632\u0647\u0627 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0634\u0627\u0645\u0644 \u0627\u0641\u0632\u0648\u062f\u0646 \u067e\u0633\u062a \u062c\u062f\u06cc\u062f \u062a\u0648\u0633\u0637 \u06a9\u0627\u0631\u0628\u0631\u060c \u062d\u0630\u0641 \u067e\u0633\u062a \u06cc\u0627 \u062d\u0630\u0641 \u062d\u0633\u0627\u0628 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0628\u0627\u0634\u062f \u06a9\u0647 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0645\u0646\u062c\u0631 \u0628\u0647 \u062d\u0630\u0641 \u067e\u0633\u062a\u200c\u0647\u0627\u06cc\u0634\u0627\u0646 \u0634\u0648\u062f \u06cc\u0627 \u0646\u0634\u0648\u062f. \u0627\u0639\u0645\u0627\u0644\u06cc \u06a9\u0647 \u0628\u0631\u0627\u06cc \u062f\u0633\u062a\u06a9\u0627\u0631\u06cc \u062f\u0627\u062f\u0647\u200c\u0647\u0627 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u062f\u0647\u06cc\u062f \u0628\u0647 \u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627\u06cc \u062e\u0627\u0635 \u0628\u0631\u0646\u0627\u0645\u0647 \u0634\u0645\u0627 \u0628\u0633\u062a\u06af\u06cc \u062f\u0627\u0631\u062f. \u0628\u0631\u0627\u06cc \u0645\u062b\u0627\u0644\u060c \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0646\u062e\u0648\u0627\u0647\u06cc\u062f \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u067e\u0633\u062a\u06cc \u0628\u062f\u0648\u0646 \u0639\u0646\u0648\u0627\u0646 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u0646\u062f.<\/p>\n<p>\u0641\u0644\u0627\u0633\u06a9 \u06cc\u06a9 \u0641\u0631\u06cc\u0645\u200c\u0648\u0631\u06a9 \u0633\u0628\u06a9 \u0648\u0632\u0646 \u0628\u0631\u0627\u06cc \u0648\u0628 \u0627\u0633\u062a \u06a9\u0647 \u0627\u0628\u0632\u0627\u0631\u0647\u0627 \u0648 \u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627\u06cc \u0645\u0641\u06cc\u062f\u06cc \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc \u0648\u0628 \u062f\u0631 \u0632\u0628\u0627\u0646 \u067e\u0627\u06cc\u062a\u0648\u0646 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u062f\u0647\u062f. PostgreSQL \u06cc\u0627 Postgres\u060c \u06cc\u06a9 \u0633\u06cc\u0633\u062a\u0645 \u0645\u062f\u06cc\u0631\u06cc\u062a \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0631\u0627\u0628\u0637\u0647\u200c\u0627\u06cc \u0627\u0633\u062a \u06a9\u0647 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0632\u0628\u0627\u0646 \u06a9\u0648\u0626\u0631\u06cc SQL \u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0627\u06cc\u0646 \u0633\u06cc\u0633\u062a\u0645 \u0645\u0637\u0627\u0628\u0642 \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f \u0627\u0633\u062a \u0648 \u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627\u06cc \u067e\u06cc\u0634\u0631\u0641\u062a\u0647\u200c\u0627\u06cc \u0645\u0627\u0646\u0646\u062f \u062a\u0631\u0627\u06a9\u0646\u0634\u200c\u0647\u0627\u06cc \u0642\u0627\u0628\u0644 \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0648 \u0647\u0645\u0632\u0645\u0627\u0646\u06cc \u0628\u062f\u0648\u0646 \u0642\u0641\u0644 \u062e\u0648\u0627\u0646\u062f\u0646 \u062f\u0627\u0631\u062f.<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634\u060c \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u06a9\u0648\u0686\u06a9 \u0645\u0631\u0648\u0631 \u06a9\u062a\u0627\u0628 \u062e\u0648\u0627\u0647\u06cc\u062f \u0633\u0627\u062e\u062a \u06a9\u0647 \u0646\u0634\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f \u0686\u06af\u0648\u0646\u0647 \u0627\u0632 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 psycopg2\u060c \u06a9\u0647 \u06cc\u06a9 \u062f\u0631\u0627\u06cc\u0648\u0631 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 PostgreSQL \u0628\u0631\u0627\u06cc \u067e\u0627\u06cc\u062a\u0648\u0646 \u0627\u0633\u062a\u060c \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0628\u0627 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 PostgreSQL \u062e\u0648\u062f \u062a\u0639\u0627\u0645\u0644 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f. \u0627\u06cc\u0646 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0631\u0627 \u0647\u0645\u0631\u0627\u0647 \u0628\u0627 \u0641\u0644\u0627\u0633\u06a9 \u0628\u0631\u0627\u06cc \u0627\u0646\u062c\u0627\u0645 \u06a9\u0627\u0631\u0647\u0627\u06cc \u067e\u0627\u06cc\u0647\u200c\u0627\u06cc \u0645\u062b\u0644 \u0627\u062a\u0635\u0627\u0644 \u0628\u0647 \u0633\u0631\u0648\u0631 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647\u060c \u0633\u0627\u062e\u062a \u062c\u062f\u0627\u0648\u0644\u060c \u0648\u0627\u0631\u062f \u06a9\u0631\u062f\u0646 \u062f\u0627\u062f\u0647\u200c\u0647\u0627 \u0628\u0647 \u062c\u062f\u0648\u0644 \u0648 \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u062f\u0627\u062f\u0647\u200c\u0647\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u062f \u06a9\u0631\u062f.<\/p>\n<p>\u06cc\u06a9 \u0645\u062d\u06cc\u0637 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0646\u0648\u06cc\u0633\u06cc \u067e\u0627\u06cc\u062a\u0648\u0646 \u06f3 \u0645\u062d\u0644\u06cc \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u062f. \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0622\u0645\u0648\u0632\u0634 \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0646\u0635\u0628 \u0648 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0645\u062d\u06cc\u0637 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0646\u0648\u06cc\u0633\u06cc \u067e\u0627\u06cc\u062a\u0648\u0646 \u06f3 \u0631\u0627 \u0628\u0631\u0627\u06cc \u062a\u0648\u0632\u06cc\u0639 \u062e\u0648\u062f \u062f\u0646\u0628\u0627\u0644 \u06a9\u0646\u06cc\u062f. \u0641\u0631\u0636 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u067e\u0631\u0648\u0698\u0647 \u0634\u0645\u0627 flask_app \u0646\u0627\u0645\u200c\u06af\u0630\u0627\u0631\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<p>\u0628\u0627\u06cc\u062f \u0628\u0627 \u0645\u0641\u0627\u0647\u06cc\u0645 \u067e\u0627\u06cc\u0647 \u0641\u0644\u0627\u0633\u06a9 \u0622\u0634\u0646\u0627 \u0628\u0627\u0634\u06cc\u062f\u060c \u0645\u0627\u0646\u0646\u062f \u0631\u0648\u062a\u200c\u0647\u0627\u060c \u062a\u0627\u0628\u0639\u200c\u0647\u0627\u06cc \u0646\u0645\u0627\u06cc\u0634\u06cc \u0648 \u0642\u0627\u0644\u0628\u200c\u0647\u0627. \u0627\u06af\u0631 \u0641\u0644\u0627\u0633\u06a9 \u0631\u0627 \u0646\u0645\u06cc\u200c\u0634\u0646\u0627\u0633\u06cc\u062f\u060c \u0622\u0645\u0648\u0632\u0634\u200c\u0647\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u0627\u0648\u0644\u06cc\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u0648\u0628 \u0628\u0627 \u0641\u0644\u0627\u0633\u06a9 \u0648 \u067e\u0627\u06cc\u062a\u0648\u0646 \u0648 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0642\u0627\u0644\u0628\u200c\u0647\u0627 \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0641\u0644\u0627\u0633\u06a9 \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u0647\u0645\u0686\u0646\u06cc\u0646 \u0628\u0627\u06cc\u062f \u0628\u0627 \u0645\u0641\u0627\u0647\u06cc\u0645 \u067e\u0627\u06cc\u0647 HTML \u0622\u0634\u0646\u0627\u06cc\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f. \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0633\u0631\u06cc \u0622\u0645\u0648\u0632\u0634 \u0633\u0627\u062e\u062a \u0633\u0627\u06cc\u062a \u0628\u0627 HTML \u0631\u0627 \u0628\u0631\u0627\u06cc \u0622\u0634\u0646\u0627\u06cc\u06cc \u0628\u06cc\u0634\u062a\u0631 \u0645\u0631\u0648\u0631 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>PostgreSQL \u0628\u0627\u06cc\u062f \u0631\u0648\u06cc \u062f\u0633\u062a\u06af\u0627\u0647 \u0645\u062d\u0644\u06cc \u0634\u0645\u0627 \u0646\u0635\u0628 \u0634\u062f\u0647 \u0628\u0627\u0634\u062f \u0648 \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u067e\u0631\u0627\u0645\u067e\u062a PostgreSQL \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f. \u0622\u0645\u0648\u0632\u0634 \u0646\u0635\u0628 \u0648 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 PostgreSQL \u0631\u0648\u06cc \u0627\u0648\u0628\u0648\u0646\u062a\u0648 \u06f2\u06f0.\u06f0\u06f4 \u0631\u0627 \u062f\u0646\u0628\u0627\u0644 \u06a9\u0646\u06cc\u062f \u0648 \u0622\u0646 \u0631\u0627 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647\u060c \u06cc\u06a9 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0628\u0647 \u0646\u0627\u0645 flask_db \u0648 \u06cc\u06a9 \u06a9\u0627\u0631\u0628\u0631 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0628\u0647 \u0646\u0627\u0645 sammy \u0628\u0631\u0627\u06cc \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0641\u0644\u0627\u0633\u06a9 \u062e\u0648\u062f \u0627\u06cc\u062c\u0627\u062f \u062e\u0648\u0627\u0647\u06cc\u062f \u06a9\u0631\u062f.<\/p>\n<p>\u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u0646\u0635\u0628 PostgreSQL\u060c \u06cc\u06a9 \u06a9\u0627\u0631\u0628\u0631 \u0633\u06cc\u0633\u062a\u0645\u200c\u0639\u0627\u0645\u0644 \u0628\u0647 \u0646\u0627\u0645 postgres \u0647\u0645 \u0633\u0627\u062e\u062a\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a \u06a9\u0647 \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0627\u062f\u0645\u06cc\u0646 PostgreSQL \u0627\u0633\u062a. \u0628\u0631\u0627\u06cc \u0627\u0646\u062c\u0627\u0645 \u06a9\u0627\u0631\u0647\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a\u06cc \u0628\u0627\u06cc\u062f \u0627\u0632 \u0627\u06cc\u0646 \u06a9\u0627\u0631\u0628\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f. \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 sudo \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f \u0648 \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631 \u0631\u0627 \u0628\u0627 \u06af\u0632\u06cc\u0646\u0647 -iu \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0648\u0631\u0648\u062f \u0628\u0647 \u062c\u0644\u0633\u0647 \u062a\u0639\u0627\u0645\u0644\u06cc PostgreSQL \u0627\u0632 \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre><code>sudo -iu postgres psql<\/code><\/pre>\n<p>\u067e\u0631\u0648\u0645\u067e\u062a PostgreSQL \u0628\u0627\u0632 \u062e\u0648\u0627\u0647\u062f \u0634\u062f \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0644\u0627\u0632\u0645 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u062f.<\/p>\n<p>\u0627\u0628\u062a\u062f\u0627 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u067e\u0631\u0648\u0698\u0647 \u062e\u0648\u062f \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f:<\/p>\n<pre><code>CREATE DATABASE flask_db;<\/code><\/pre>\n<p>\u062a\u0648\u062c\u0647: \u0647\u0631 \u062f\u0633\u062a\u0648\u0631 Postgres \u0628\u0627\u06cc\u062f \u0628\u0627 \u0633\u0645\u06cc\u200c\u06a9\u0627\u0644\u0646 (;) \u067e\u0627\u06cc\u0627\u0646 \u06cc\u0627\u0628\u062f\u060c \u0627\u06af\u0631 \u0628\u0627 \u0645\u0634\u06a9\u0644 \u0645\u0648\u0627\u062c\u0647\u06cc\u062f\u060c \u0627\u06cc\u0646 \u0645\u0648\u0631\u062f \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u0633\u067e\u0633 \u06cc\u06a9 \u06a9\u0627\u0631\u0628\u0631 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0628\u0631\u0627\u06cc \u067e\u0631\u0648\u0698\u0647 \u062e\u0648\u062f \u0628\u0633\u0627\u0632\u06cc\u062f \u0648 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0645\u0637\u0645\u0626\u0646\u06cc \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre><code>CREATE USER sammy WITH PASSWORD 'your_password';<\/code><\/pre>\n<p>\u062d\u0627\u0644\u0627 \u0627\u06cc\u0646 \u06a9\u0627\u0631\u0628\u0631 \u0631\u0627 \u0635\u0627\u062d\u0628 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 flask_db \u06a9\u0646\u06cc\u062f:<\/p>\n<pre><code>ALTER DATABASE flask_db OWNER TO sammy;<\/code><\/pre>\n<p>\u0628\u0631\u0627\u06cc \u062a\u0623\u06cc\u06cc\u062f \u0627\u06cc\u062c\u0627\u062f \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647\u060c \u0644\u06cc\u0633\u062a \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647\u200c\u0647\u0627 \u0631\u0627 \u0628\u06af\u06cc\u0631\u06cc\u062f:<\/p>\n<pre><code>\\l<\/code><\/pre>\n<p>\u062f\u0631 \u0644\u06cc\u0633\u062a \u0645\u0634\u0627\u0647\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u062f \u06a9\u0631\u062f \u06a9\u0647 flask_db \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f.<\/p>\n<p>\u0628\u0631\u0627\u06cc \u062e\u0631\u0648\u062c \u0627\u0632 \u067e\u0631\u0627\u0645\u067e\u062a PostgreSQL\u060c \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f:<\/p>\n<pre><code>\\q<\/code><\/pre>\n<p>\u062d\u0627\u0644\u0627 postgres \u062a\u0646\u0638\u06cc\u0645 \u0634\u062f\u0647 \u0627\u0633\u062a \u0648 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0647 \u06a9\u0645\u06a9 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 psycopg2 \u0628\u0627 \u067e\u0627\u06cc\u062a\u0648\u0646 \u0628\u0647 \u0622\u0646 \u062f\u0633\u062a\u0631\u0633\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f. \u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u0628\u0639\u062f\u060c \u0627\u06cc\u0646 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0631\u0627 \u0647\u0645\u0631\u0627\u0647 \u0628\u0627 \u0641\u0644\u0627\u0633\u06a9 \u0646\u0635\u0628 \u062e\u0648\u0627\u0647\u06cc\u062f \u06a9\u0631\u062f.<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647\u060c \u0628\u0627 \u0641\u0639\u0627\u0644 \u0628\u0648\u062f\u0646 \u0645\u062d\u06cc\u0637 \u0645\u062c\u0627\u0632\u06cc\u060c \u0628\u0627 pip \u0641\u0644\u0627\u0633\u06a9 \u0648 psycopg2 \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre><code>pip install flask psycopg2-binary<\/code><\/pre>\n<p>\u067e\u0633 \u0627\u0632 \u067e\u0627\u06cc\u0627\u0646 \u0646\u0635\u0628\u060c \u062e\u0631\u0648\u062c\u06cc \u0645\u0634\u0627\u0628\u0647 \u0632\u06cc\u0631 \u062e\u0648\u0627\u0647\u06cc\u062f \u062f\u06cc\u062f:<\/p>\n<pre><code>Successfully installed flask psycopg2-binary<\/code><\/pre>\n<p>\u062d\u0627\u0644\u0627 \u0628\u0633\u062a\u0647\u200c\u0647\u0627\u06cc \u0644\u0627\u0632\u0645 \u062f\u0631 \u0645\u062d\u06cc\u0637 \u0645\u062c\u0627\u0632\u06cc \u0634\u0645\u0627 \u0646\u0635\u0628 \u0634\u062f\u0647\u200c\u0627\u0646\u062f. \u062f\u0631 \u0627\u062f\u0627\u0645\u0647 \u0627\u062a\u0635\u0627\u0644 \u0648 \u062a\u0646\u0638\u06cc\u0645 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u062f\u0647\u06cc\u062f.<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647\u060c \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u067e\u0627\u06cc\u062a\u0648\u0646 \u0628\u0647 \u0646\u0627\u0645 init_db.py \u062f\u0631 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u067e\u0631\u0648\u0698\u0647 flask_app \u0628\u0633\u0627\u0632\u06cc\u062f \u062a\u0627 \u0628\u0647 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 flask_db \u0645\u062a\u0635\u0644 \u0634\u062f\u0647\u060c \u062c\u062f\u0648\u0644\u06cc \u0628\u0631\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u06a9\u062a\u0627\u0628\u200c\u0647\u0627 \u0628\u0633\u0627\u0632\u062f \u0648 \u0646\u0645\u0648\u0646\u0647\u200c\u0627\u06cc \u0627\u0632 \u062f\u0627\u062f\u0647\u200c\u0647\u0627 \u0631\u0627 \u0648\u0627\u0631\u062f \u062c\u062f\u0648\u0644 \u06a9\u0646\u062f.<\/p>\n<p>\u0627\u0628\u062a\u062f\u0627 \u0628\u0627 \u0641\u0639\u0627\u0644 \u0628\u0648\u062f\u0646 \u0645\u062d\u06cc\u0637 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0646\u0648\u06cc\u0633\u06cc\u060c \u0641\u0627\u06cc\u0644 init_db.py \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u0648 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u06a9\u062f \u0632\u06cc\u0631 \u0631\u0627 \u062f\u0631 init_db.py \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f:<\/p>\n<pre><code>import os\r\nimport psycopg2\r\n\r\nconn = psycopg2.connect(\r\n    host=\"localhost\",\r\n    database=\"flask_db\",\r\n    user=os.environ['DB_USERNAME'],\r\n    password=os.environ['DB_PASSWORD']\r\n)\r\n\r\ncur = conn.cursor()\r\n\r\ncur.execute('DROP TABLE IF EXISTS books;')\r\n\r\ncur.execute('''\r\n    CREATE TABLE books (\r\n        id SERIAL PRIMARY KEY,\r\n        title VARCHAR(255) NOT NULL,\r\n        author VARCHAR(255) NOT NULL,\r\n        pages INTEGER NOT NULL,\r\n        review TEXT,\r\n        date_added TIMESTAMP DEFAULT CURRENT_TIMESTAMP\r\n    );\r\n''')\r\n\r\ncur.execute('''\r\n    INSERT INTO books (title, author, pages, review)\r\n    VALUES (%s, %s, %s, %s);\r\n''', ('A Tale of Two Cities', 'Charles Dickens', 489, 'A gripping classic novel.'))\r\n\r\ncur.execute('''\r\n    INSERT INTO books (title, author, pages, review)\r\n    VALUES (%s, %s, %s, %s);\r\n''', ('Anna Karenina', 'Leo Tolstoy', 864, 'An epic Russian novel.'))\r\n\r\nconn.commit()\r\n\r\ncur.close()\r\nconn.close()<\/code><\/pre>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u06a9\u062f \u0627\u0628\u062a\u062f\u0627 \u0645\u0627\u0698\u0648\u0644 os \u0631\u0627 \u0628\u0631\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0645\u062d\u06cc\u0637\u06cc \u0648\u0627\u0631\u062f \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u062a\u0627 \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0648 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u062f\u0631 \u06a9\u062f \u0645\u0646\u0628\u0639 \u0645\u0634\u062e\u0635 \u0646\u0628\u0627\u0634\u062f. \u0633\u067e\u0633 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 psycopg2 \u0631\u0627 \u0648\u0627\u0631\u062f \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u0648 \u0628\u0627 \u062a\u0627\u0628\u0639 psycopg2.connect() \u0628\u0647 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0645\u062a\u0635\u0644 \u0645\u06cc\u200c\u0634\u0648\u06cc\u0645. \u0647\u0627\u0633\u062a \u0647\u0645\u0627\u0646 localhost \u0627\u0633\u062a. \u0646\u0627\u0645 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 flask_db \u0627\u0633\u062a. \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0648 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0627\u0632 \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0645\u062d\u06cc\u0637\u06cc DB_USERNAME \u0648 DB_PASSWORD \u062e\u0648\u0627\u0646\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f. \u0633\u067e\u0633 \u06cc\u06a9 \u06a9\u0631\u0633\u0631 \u0645\u06cc\u200c\u0633\u0627\u0632\u06cc\u0645 \u062a\u0627 \u0628\u062a\u0648\u0627\u0646\u06cc\u0645 \u062f\u0633\u062a\u0648\u0631\u0647\u0627\u06cc SQL \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u0645.<\/p>\n<p>\u0628\u0627 \u0627\u062c\u0631\u0627\u06cc \u062f\u0633\u062a\u0648\u0631 DROP TABLE IF EXISTS, \u0627\u06af\u0631 \u062c\u062f\u0648\u0644 books \u0642\u0628\u0644\u0627\u064b \u0648\u062c\u0648\u062f \u062f\u0627\u0634\u062a \u062d\u0630\u0641 \u0645\u06cc\u200c\u0634\u0648\u062f \u062a\u0627 \u062a\u062f\u0627\u062e\u0644 \u0646\u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645. \u062f\u0631 \u0627\u062f\u0627\u0645\u0647 \u062c\u062f\u0648\u0644 books \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u0634\u0648\u062f \u06a9\u0647 \u0633\u062a\u0648\u0646\u200c\u0647\u0627\u06cc id\u060c title\u060c author\u060c pages\u060c review \u0648 date_added \u062f\u0627\u0631\u062f.<\/p>\n<p>\u0633\u067e\u0633 \u062f\u0648 \u0631\u062f\u06cc\u0641 \u0646\u0645\u0648\u0646\u0647 \u0648\u0627\u0631\u062f \u062c\u062f\u0648\u0644 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f \u06a9\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062f\u0648 \u06a9\u062a\u0627\u0628 \u0631\u0627 \u062f\u0627\u0631\u0646\u062f. \u0627\u0632 \u062c\u0627\u06cc\u06af\u0630\u0627\u0631\u0647\u0627\u06cc %s \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u062f\u0647 \u062a\u0627 \u0627\u0632 \u062d\u0645\u0644\u0627\u062a SQL injection \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0634\u0648\u062f.<\/p>\n<p>\u062f\u0631 \u067e\u0627\u06cc\u0627\u0646 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u0630\u062e\u06cc\u0631\u0647 \u0634\u062f\u0647 \u0648 \u0627\u062a\u0635\u0627\u0644 \u0648 \u06a9\u0631\u0633\u0631 \u0628\u0633\u062a\u0647 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f.<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u060c \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0645\u062d\u06cc\u0637\u06cc DB_USERNAME \u0648 DB_PASSWORD \u0631\u0627 \u0628\u0627 \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0648 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u062e\u0648\u062f \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre><code>export DB_USERNAME=sammy\r\nexport DB_PASSWORD=your_password<\/code><\/pre>\n<p>\u062d\u0627\u0644\u0627 \u0641\u0627\u06cc\u0644 init_db.py \u0631\u0627 \u0628\u0627 \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre><code>python init_db.py<\/code><\/pre>\n<p>\u0627\u06af\u0631 \u0628\u062f\u0648\u0646 \u062e\u0637\u0627 \u0627\u062c\u0631\u0627 \u0634\u0648\u062f\u060c \u062c\u062f\u0648\u0644 books \u0628\u0647 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 flask_db \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0628\u0631\u0631\u0633\u06cc\u060c \u0648\u0627\u0631\u062f \u067e\u0631\u0627\u0645\u067e\u062a postgres \u0634\u0648\u06cc\u062f:<\/p>\n<pre><code>sudo -iu postgres psql\r\n\\c flask_db<\/code><\/pre>\n<p>\u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc \u0648\u0627\u0631\u062f \u0634\u062f\u0647 \u0631\u0627 \u0628\u0627 \u06a9\u0648\u0626\u0631\u06cc \u0632\u06cc\u0631 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre><code>SELECT title, author FROM books;<\/code><\/pre>\n<p>\u062e\u0631\u0648\u062c\u06cc \u0634\u0627\u0645\u0644 \u062f\u0648 \u06a9\u062a\u0627\u0628 \u0648\u0627\u0631\u062f \u0634\u062f\u0647 \u0627\u0633\u062a. \u0628\u0631\u0627\u06cc \u062e\u0631\u0648\u062c \u0627\u0632 \u062c\u0644\u0633\u0647 \\q \u0631\u0627 \u0628\u0632\u0646\u06cc\u062f.<\/p>\n<p>\u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u0628\u0639\u062f\u060c \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0641\u0644\u0627\u0633\u06a9 \u0645\u06cc\u200c\u0633\u0627\u0632\u06cc\u062f \u06a9\u0647 \u0628\u0647 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0645\u062a\u0635\u0644 \u0634\u062f\u0647\u060c \u062f\u0648 \u0645\u0631\u0648\u0631 \u06a9\u062a\u0627\u0628 \u0631\u0627 \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u0648 \u062f\u0631 \u0635\u0641\u062d\u0647 \u0627\u0635\u0644\u06cc \u0646\u0645\u0627\u06cc\u0634 \u062f\u0647\u062f.<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647\u060c \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0641\u0644\u0627\u0633\u06a9 \u0645\u06cc\u200c\u0633\u0627\u0632\u06cc\u062f \u0628\u0627 \u06cc\u06a9 \u0631\u0648\u062a \u0627\u0635\u0644\u06cc \u06a9\u0647 \u06a9\u062a\u0627\u0628\u200c\u0647\u0627 \u0631\u0627 \u0627\u0632 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u062f\u0631\u06cc\u0627\u0641\u062a \u0648 \u0646\u0645\u0627\u06cc\u0634 \u0645\u06cc\u200c\u062f\u0647\u062f.<\/p>\n<p>\u0628\u0627 \u0641\u0639\u0627\u0644 \u0628\u0648\u062f\u0646 \u0645\u062d\u06cc\u0637 \u0628\u0631\u0646\u0627\u0645\u0647\u060c \u0641\u0627\u06cc\u0644 app.py \u0631\u0627 \u062f\u0631 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc flask_app \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f \u0648 \u06a9\u062f \u0632\u06cc\u0631 \u0631\u0627 \u062f\u0631 \u0622\u0646 \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f:<\/p>\n<pre><code>import os\r\nimport psycopg2\r\nfrom flask import Flask, render_template\r\n\r\napp = Flask(__name__)\r\n\r\ndef get_db_connection():\r\n    conn = psycopg2.connect(\r\n        host=\"localhost\",\r\n        database=\"flask_db\",\r\n        user=os.environ['DB_USERNAME'],\r\n        password=os.environ['DB_PASSWORD']\r\n    )\r\n    return conn\r\n\r\n@app.route('\/')\r\ndef index():\r\n    conn = get_db_connection()\r\n    cur = conn.cursor()\r\n    cur.execute('SELECT * FROM books;')\r\n    books = cur.fetchall()\r\n    cur.close()\r\n    conn.close()\r\n    return render_template('index.html', books=books)<\/code><\/pre>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u06a9\u062f\u060c \u0627\u0628\u062a\u062f\u0627 \u0645\u0627\u0698\u0648\u0644\u200c\u0647\u0627\u06cc \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0631\u062f\u0647 \u0648 \u06cc\u06a9 \u0646\u0645\u0648\u0646\u0647 \u0627\u0632 \u0628\u0631\u0646\u0627\u0645\u0647 \u0641\u0644\u0627\u0633\u06a9 \u0645\u06cc\u200c\u0633\u0627\u0632\u06cc\u0645. \u062a\u0627\u0628\u0639 get_db_connection \u0627\u062a\u0635\u0627\u0644 \u0628\u0647 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0631\u0627 \u0628\u0631\u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0631\u0648\u062a \/ \u0635\u0641\u062d\u0647 \u0627\u0635\u0644\u06cc\u060c \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc \u062c\u062f\u0648\u0644 books \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u0648 \u0628\u0647 \u0642\u0627\u0644\u0628 index.html \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u060c \u0627\u0628\u062a\u062f\u0627 \u06cc\u06a9 \u0642\u0627\u0644\u0628 \u067e\u0627\u06cc\u0647 \u0645\u06cc\u200c\u0633\u0627\u0632\u06cc\u062f \u062a\u0627 \u06a9\u062f HTML \u0645\u0634\u062a\u0631\u06a9 \u0631\u0627 \u0646\u06af\u0647 \u062f\u0627\u0631\u062f. \u06cc\u06a9 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc templates \u0628\u0633\u0627\u0632\u06cc\u062f \u0648 \u062f\u0627\u062e\u0644 \u0622\u0646 \u0641\u0627\u06cc\u0644 base.html \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f:<\/p>\n<pre><code>&lt;!doctype html&gt;\r\n&lt;html lang=\"en\"&gt;\r\n  &lt;head&gt;\r\n    &lt;meta charset=\"utf-8\"&gt;\r\n    &lt;meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"&gt;\r\n    &lt;title&gt;{% block title %}ParminCloud Book Reviews{% endblock %}&lt;\/title&gt;\r\n  &lt;\/head&gt;\r\n  &lt;body&gt;\r\n    &lt;nav&gt;\r\n      &lt;a href=\"{{ url_for('index') }}\"&gt;Home&lt;\/a&gt;\r\n    &lt;\/nav&gt;\r\n    &lt;main&gt;\r\n      {% block content %}{% endblock %}\r\n    &lt;\/main&gt;\r\n  &lt;\/body&gt;\r\n&lt;\/html&gt;<\/code><\/pre>\n<p>\u0627\u06cc\u0646 \u0642\u0627\u0644\u0628 \u067e\u0627\u06cc\u0647\u060c \u06a9\u062f HTML \u067e\u0627\u06cc\u0647 \u0631\u0627 \u062f\u0627\u0631\u062f. \u0628\u0644\u0648\u06a9\u200c\u0647\u0627\u06cc title \u0648 content \u0642\u0627\u0628\u0644 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646\u06cc \u0647\u0633\u062a\u0646\u062f. \u0645\u0646\u0648\u06cc \u0646\u0627\u0648\u0628\u0631\u06cc \u0634\u0627\u0645\u0644 \u0644\u06cc\u0646\u06a9 \u0635\u0641\u062d\u0647 \u0627\u0635\u0644\u06cc \u0627\u0633\u062a.<\/p>\n<p>\u062d\u0627\u0644\u0627 \u0642\u0627\u0644\u0628 index.html \u0631\u0627 \u0628\u0633\u0627\u0632\u06cc\u062f \u0648 \u06a9\u062f \u0632\u06cc\u0631 \u0631\u0627 \u062f\u0627\u062e\u0644 \u0622\u0646 \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f:<\/p>\n<pre><code>{% extends 'base.html' %}\r\n\r\n{% block title %}Book Reviews{% endblock %}\r\n\r\n{% block content %}\r\n  &lt;h1&gt;Book Reviews&lt;\/h1&gt;\r\n  &lt;ul&gt;\r\n  {% for book in books %}\r\n    &lt;li&gt;{{ book[1] }} by {{ book[2] }}, {{ book[3] }} pages. Review: {{ book[4] }} (Added on {{ book[5] }})&lt;\/li&gt;\r\n  {% endfor %}\r\n  &lt;\/ul&gt;\r\n{% endblock %}<\/code><\/pre>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u0642\u0627\u0644\u0628\u060c \u0642\u0627\u0644\u0628 \u067e\u0627\u06cc\u0647 \u0631\u0627 \u062a\u0648\u0633\u0639\u0647 \u062f\u0627\u062f\u0647 \u0648 \u0645\u062d\u062a\u0648\u06cc \u0628\u0644\u0648\u06a9 content \u0631\u0627 \u0628\u0627 \u0646\u0645\u0627\u06cc\u0634 \u0644\u06cc\u0633\u062a\u06cc \u0627\u0632 \u06a9\u062a\u0627\u0628\u200c\u0647\u0627 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u0645. \u0647\u0631 \u06a9\u062a\u0627\u0628 \u0634\u0627\u0645\u0644 \u0639\u0646\u0648\u0627\u0646\u060c \u0646\u0648\u06cc\u0633\u0646\u062f\u0647\u060c \u062a\u0639\u062f\u0627\u062f \u0635\u0641\u062d\u0627\u062a\u060c \u0645\u0631\u0648\u0631 \u0648 \u062a\u0627\u0631\u06cc\u062e \u0627\u0636\u0627\u0641\u0647 \u0634\u062f\u0646 \u0627\u0633\u062a.<\/p>\n<p>\u062f\u0631 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u067e\u0631\u0648\u0698\u0647 \u0648 \u0628\u0627 \u0641\u0639\u0627\u0644 \u0628\u0648\u062f\u0646 \u0645\u062d\u06cc\u0637 \u0645\u062c\u0627\u0632\u06cc\u060c \u0645\u062a\u063a\u06cc\u0631 \u0645\u062d\u06cc\u0637\u06cc FLASK_APP \u0631\u0627 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0628\u0631\u0646\u0627\u0645\u0647 \u0641\u0644\u0627\u0633\u06a9 \u0631\u0627 \u0645\u0639\u0631\u0641\u06cc \u06a9\u0646\u06cc\u062f \u0648 FLASK_ENV \u0631\u0627 \u0631\u0648\u06cc development \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f \u0628\u0631\u0627\u06cc \u0641\u0639\u0627\u0644\u0633\u0627\u0632\u06cc \u062d\u0627\u0644\u062a \u062a\u0648\u0633\u0639\u0647:<\/p>\n<pre><code>export FLASK_APP=app.py\r\nexport FLASK_ENV=development<\/code><\/pre>\n<p>\u0627\u06af\u0631 \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc DB_USERNAME \u0648 DB_PASSWORD \u0631\u0627 \u0642\u0628\u0644\u0627\u064b \u062a\u0646\u0638\u06cc\u0645 \u0646\u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u062f\u060c \u0622\u0646\u200c\u0647\u0627 \u0631\u0627 \u0647\u0645 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre><code>export DB_USERNAME=sammy\r\nexport DB_PASSWORD=your_password<\/code><\/pre>\n<p>\u062d\u0627\u0644 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0628\u0627 \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre><code>flask run<\/code><\/pre>\n<p>\u0645\u0631\u0648\u0631\u06af\u0631 \u062e\u0648\u062f \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0631\u062f\u0647 \u0648 \u0628\u0647 \u0622\u062f\u0631\u0633 \u0632\u06cc\u0631 \u0628\u0631\u0648\u06cc\u062f:<\/p>\n<pre><code>http:\/\/127.0.0.1:5000\/<\/code><\/pre>\n<p>\u062f\u0648 \u06a9\u062a\u0627\u0628\u06cc \u06a9\u0647 \u062f\u0631 \u0627\u0628\u062a\u062f\u0627 \u0648\u0627\u0631\u062f \u0634\u062f\u0647 \u0628\u0648\u062f\u0646\u062f \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u062f \u06a9\u0631\u062f.<\/p>\n<p>\u062d\u0627\u0644\u0627 \u0628\u0627\u06cc\u062f \u0627\u062c\u0627\u0632\u0647 \u062f\u0647\u06cc\u062f \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u06a9\u062a\u0627\u0628\u200c\u0647\u0627\u06cc \u062c\u062f\u06cc\u062f \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u0646\u062f. \u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u0628\u0639\u062f \u0645\u0633\u06cc\u0631 \u062c\u062f\u06cc\u062f\u06cc \u0628\u0631\u0627\u06cc \u0627\u0641\u0632\u0648\u062f\u0646 \u06a9\u062a\u0627\u0628 \u0645\u06cc\u200c\u0633\u0627\u0632\u06cc\u062f.<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647\u060c \u06cc\u06a9 \u0631\u0648\u062a \u062c\u062f\u06cc\u062f \u0628\u0631\u0627\u06cc \u0627\u0641\u0632\u0648\u062f\u0646 \u06a9\u062a\u0627\u0628 \u0648 \u0645\u0631\u0648\u0631 \u062c\u062f\u06cc\u062f \u0628\u0647 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0645\u06cc\u200c\u0633\u0627\u0632\u06cc\u062f.<\/p>\n<p>\u0635\u0641\u062d\u0647 \u062c\u062f\u06cc\u062f\u06cc \u0628\u0627 \u0641\u0631\u0645 \u062f\u0627\u0631\u06cc\u062f \u06a9\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0639\u0646\u0648\u0627\u0646 \u06a9\u062a\u0627\u0628\u060c \u0646\u0648\u06cc\u0633\u0646\u062f\u0647\u060c \u062a\u0639\u062f\u0627\u062f \u0635\u0641\u062d\u0627\u062a \u0648 \u0645\u0631\u0648\u0631 \u0631\u0627 \u0648\u0627\u0631\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u06a9\u0627\u0631\u060c \u0641\u0627\u06cc\u0644 app.py \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0631\u062f\u0647 \u0648 \u062f\u0631 \u0627\u0628\u062a\u062f\u0627\u06cc \u0641\u0627\u06cc\u0644\u060c \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f:<\/p>\n<pre><code>from flask import request, redirect, url_for<\/code><\/pre>\n<p>\u062f\u0631 \u0627\u0646\u062a\u0647\u0627\u06cc \u0641\u0627\u06cc\u0644\u060c \u0631\u0648\u062a \u062c\u062f\u06cc\u062f \/create \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre><code>@app.route('\/create', methods=('GET', 'POST'))\r\ndef create():\r\n    if request.method == 'POST':\r\n        title = request.form['title']\r\n        author = request.form['author']\r\n        pages = request.form['pages']\r\n        review = request.form['review']\r\n\r\n        conn = get_db_connection()\r\n        cur = conn.cursor()\r\n        cur.execute('INSERT INTO books (title, author, pages, review) VALUES (%s, %s, %s, %s)',\r\n                    (title, author, pages, review))\r\n        conn.commit()\r\n        cur.close()\r\n        conn.close()\r\n        return redirect(url_for('index'))\r\n\r\n    return render_template('create.html')<\/code><\/pre>\n<p>\u0627\u06cc\u0646 \u0631\u0648\u062a \u0631\u0648\u0634\u200c\u0647\u0627\u06cc GET \u0648 POST \u0631\u0627 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0648\u0642\u062a\u06cc \u0635\u0641\u062d\u0647 \u0628\u0627 GET \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062f\u0627\u062f\u0647 \u0634\u0648\u062f\u060c \u0641\u0631\u0645 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f. \u0647\u0646\u06af\u0627\u0645 \u0627\u0631\u0633\u0627\u0644 \u0641\u0631\u0645 \u0628\u0627 POST\u060c \u062f\u0627\u062f\u0647\u200c\u0647\u0627 \u0631\u0627 \u06af\u0631\u0641\u062a\u0647 \u0648 \u0628\u0647 \u062c\u062f\u0648\u0644 books \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u0633\u067e\u0633 \u0628\u0647 \u0635\u0641\u062d\u0647 \u0627\u0635\u0644\u06cc \u0647\u062f\u0627\u06cc\u062a \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<p>\u06cc\u06a9 \u0642\u0627\u0644\u0628 create.html \u062f\u0627\u062e\u0644 \u0641\u0648\u0644\u062f\u0631 templates \u0628\u0633\u0627\u0632\u06cc\u062f \u0648 \u06a9\u062f \u0632\u06cc\u0631 \u0631\u0627 \u062f\u0631 \u0622\u0646 \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f:<\/p>\n<pre><code>{% extends 'base.html' %}\r\n\r\n{% block title %}Add a New Book{% endblock %}\r\n\r\n{% block content %}\r\n  &lt;h1&gt;Add a New Book&lt;\/h1&gt;\r\n  &lt;form method=\"post\"&gt;\r\n    &lt;label for=\"title\"&gt;Title&lt;\/label&gt;\r\n    &lt;input type=\"text\" name=\"title\" id=\"title\" required&gt;\r\n\r\n    &lt;label for=\"author\"&gt;Author&lt;\/label&gt;\r\n    &lt;input type=\"text\" name=\"author\" id=\"author\" required&gt;\r\n\r\n    &lt;label for=\"pages\"&gt;Pages&lt;\/label&gt;\r\n    &lt;input type=\"number\" name=\"pages\" id=\"pages\" required&gt;\r\n\r\n    &lt;label for=\"review\"&gt;Review&lt;\/label&gt;\r\n    &lt;textarea name=\"review\" id=\"review\"&gt;&lt;\/textarea&gt;\r\n\r\n    &lt;button type=\"submit\"&gt;Submit&lt;\/button&gt;\r\n  &lt;\/form&gt;\r\n{% endblock %}<\/code><\/pre>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u0642\u0627\u0644\u0628\u060c \u06cc\u06a9 \u0641\u0631\u0645 \u0628\u0631\u0627\u06cc \u0648\u0627\u0631\u062f \u06a9\u0631\u062f\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u062a\u0627\u0628 \u062f\u0627\u0631\u06cc\u062f \u06a9\u0647 \u0647\u0646\u06af\u0627\u0645 \u0627\u0631\u0633\u0627\u0644\u060c \u0628\u0647 \u0631\u0648\u062a \/create \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n<p>\u0628\u0627 \u0627\u062c\u0631\u0627\u06cc \u0645\u062c\u062f\u062f \u0633\u0631\u0648\u0631 \u062a\u0648\u0633\u0639\u0647 \u0641\u0644\u0627\u0633\u06a9\u060c \u0628\u0647 \u0622\u062f\u0631\u0633 <code>\/create<\/code> \u0628\u0631\u0648\u06cc\u062f \u0648 \u0641\u0631\u0645 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u06cc\u062f. \u0628\u0627 \u067e\u0631 \u06a9\u0631\u062f\u0646 \u0648 \u0627\u0631\u0633\u0627\u0644 \u0641\u0631\u0645\u060c \u062f\u0627\u062f\u0647 \u062c\u062f\u06cc\u062f \u0628\u0647 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0627\u0636\u0627\u0641\u0647 \u0648 \u0628\u0647 \u0635\u0641\u062d\u0647 \u0627\u0635\u0644\u06cc \u0647\u062f\u0627\u06cc\u062a \u0645\u06cc\u200c\u0634\u0648\u06cc\u062f.<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u0644\u06cc\u0646\u06a9 \u0628\u0647 \u0635\u0641\u062d\u0647 Create\u060c \u0641\u0627\u06cc\u0644 base.html \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0631\u062f\u0647 \u0648 \u0645\u0646\u0648 \u0631\u0627 \u0628\u0647 \u0634\u06a9\u0644 \u0632\u06cc\u0631 \u0648\u06cc\u0631\u0627\u06cc\u0634 \u06a9\u0646\u06cc\u062f:<\/p>\n<pre><code>&lt;nav&gt;\r\n  &lt;a href=\"{{ url_for('index') }}\"&gt;Home&lt;\/a&gt;\r\n  &lt;a href=\"{{ url_for('create') }}\"&gt;Add Book&lt;\/a&gt;\r\n&lt;\/nav&gt;<\/code><\/pre>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u0644\u06cc\u0646\u06a9 \u0627\u0641\u0632\u0648\u062f\u0646 \u06a9\u062a\u0627\u0628 \u062f\u0631 \u0645\u0646\u0648\u06cc \u0646\u0627\u0648\u0628\u0631\u06cc \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n<p>\u0634\u0645\u0627 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0648\u0628 \u06a9\u0648\u0686\u06a9 \u0645\u0631\u0648\u0631 \u06a9\u062a\u0627\u0628 \u0633\u0627\u062e\u062a\u0647\u200c\u0627\u06cc\u062f \u06a9\u0647 \u0628\u0627 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 PostgreSQL \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0631\u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0627\u06cc\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u0642\u0627\u0628\u0644\u06cc\u062a \u0627\u0641\u0632\u0648\u062f\u0646 \u062f\u0627\u062f\u0647 \u062c\u062f\u06cc\u062f \u0628\u0647 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647\u060c \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u0648 \u0646\u0645\u0627\u06cc\u0634 \u0622\u0646 \u0631\u0627 \u062f\u0627\u0631\u062f.<\/p>\n<div style='text-align:center' class='yasr-auto-insert-visitor'><\/div>","protected":false},"excerpt":{"rendered":"<p>\u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc \u0648\u0628\u060c \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0628\u0647 \u06cc\u06a9 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u062f \u06a9\u0647 \u0645\u062c\u0645\u0648\u0639\u0647\u200c\u06cc \u0633\u0627\u0632\u0645\u0627\u0646\u200c\u06cc\u0627\u0641\u062a\u0647\u200c\u0627\u06cc \u0627\u0632 \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u0633\u062a. \u0627\u0632 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0628\u0631\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0648 \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc \u067e\u0627\u06cc\u062f\u0627\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646 \u0622\u0646\u200c\u0647\u0627 \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u0645\u0624\u062b\u0631 \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u0648 \u062f\u0633\u062a\u06a9\u0627\u0631\u06cc \u06a9\u0631\u062f. \u0628\u0631\u0627\u06cc \u0645\u062b\u0627\u0644\u060c \u062f\u0631 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u06cc \u0634\u0628\u06a9\u0647 \u0627\u062c\u062a\u0645\u0627\u0639\u06cc\u060c \u0634\u0645\u0627 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647\u200c\u0627\u06cc \u062f\u0627\u0631\u06cc\u062f \u06a9\u0647 \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 (\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0634\u062e\u0635\u06cc\u060c \u067e\u0633\u062a\u200c\u0647\u0627\u060c \u06a9\u0627\u0645\u0646\u062a\u200c\u0647\u0627\u060c [&hellip;]<\/p>\n","protected":false},"author":9,"featured_media":5670,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"yasr_overall_rating":0,"yasr_post_is_review":"","yasr_auto_insert_disabled":"","yasr_review_type":"","footnotes":""},"categories":[67,190,376],"tags":[562,564,563,561,560],"class_list":["post-5655","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-67","category-programming","category-376","tag--psycopg2--","tag-564","tag----postgresql","tag-----python--flask","tag-560"],"aioseo_notices":[],"yasr_visitor_votes":{"stars_attributes":{"read_only":false,"span_bottom":false},"number_of_votes":0,"sum_votes":0},"_links":{"self":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts\/5655","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/comments?post=5655"}],"version-history":[{"count":3,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts\/5655\/revisions"}],"predecessor-version":[{"id":5669,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts\/5655\/revisions\/5669"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/media\/5670"}],"wp:attachment":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/media?parent=5655"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/categories?post=5655"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/tags?post=5655"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}