{"id":6720,"date":"2026-07-26T17:00:43","date_gmt":"2026-07-26T13:30:43","guid":{"rendered":"https:\/\/parmin.cloud\/blog\/?p=6720"},"modified":"2026-07-26T17:00:43","modified_gmt":"2026-07-26T13:30:43","slug":"%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%da%a9%d8%a7%d8%b1-%d8%a8%d8%a7-%d8%af%db%8c%d8%aa%d8%a7%d8%a8%db%8c%d8%b3-sqlite-%d8%af%d8%b1-flask-%d9%88-%d9%85%d8%af%db%8c%d8%b1%db%8c%d8%aa-%d8%b1%d9%88%d8%a7%d8%a8","status":"publish","type":"post","link":"https:\/\/parmin.cloud\/blog\/%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%da%a9%d8%a7%d8%b1-%d8%a8%d8%a7-%d8%af%db%8c%d8%aa%d8%a7%d8%a8%db%8c%d8%b3-sqlite-%d8%af%d8%b1-flask-%d9%88-%d9%85%d8%af%db%8c%d8%b1%db%8c%d8%aa-%d8%b1%d9%88%d8%a7%d8%a8\/","title":{"rendered":"\u0622\u0645\u0648\u0632\u0634 \u06a9\u0627\u0631 \u0628\u0627 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 SQLite \u062f\u0631 Flask \u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0631\u0648\u0627\u0628\u0637 \u06cc\u06a9\u200c\u0628\u0647\u200c\u0686\u0646\u062f (One-to-Many)"},"content":{"rendered":"<p>\u0645\u0642\u062f\u0645\u0647<br \/>\n\u0641\u0644\u0627\u0633\u06a9 (Flask) \u06cc\u06a9\u06cc \u0627\u0632 \u0645\u062d\u0628\u0648\u0628\u200c\u062a\u0631\u06cc\u0646 \u0641\u0631\u06cc\u0645\u200c\u0648\u0631\u06a9\u200c\u0647\u0627\u06cc \u0633\u0628\u06a9 \u0648 \u0642\u062f\u0631\u062a\u0645\u0646\u062f \u067e\u0627\u06cc\u062a\u0648\u0646 \u0628\u0631\u0627\u06cc \u062a\u0648\u0633\u0639\u0647 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc \u0648\u0628 \u0627\u0633\u062a \u0648 SQLite \u0646\u06cc\u0632 \u06cc\u06a9 \u067e\u0627\u06cc\u06af\u0627\u0647\u200c\u062f\u0627\u062f\u0647 \u0633\u0631\u06cc\u0639 \u0648 \u0628\u062f\u0648\u0646 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u0633\u0631\u0648\u0631 \u0645\u062c\u0632\u0627\u0633\u062a \u06a9\u0647 \u0628\u0647\u200c\u0631\u0627\u062d\u062a\u06cc \u06a9\u0646\u0627\u0631 \u067e\u0627\u06cc\u062a\u0648\u0646 \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647 \u0622\u0645\u0648\u0632\u0634\u06cc\u060c \u0642\u0635\u062f \u062f\u0627\u0631\u06cc\u0645 \u0628\u0627 \u062a\u0631\u06a9\u06cc\u0628 Flask \u0648 SQLite \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0627\u0631\u0647\u0627\u06cc \u0631\u0648\u0632\u0645\u0631\u0647 (To-Do List) \u0628\u0633\u0627\u0632\u06cc\u0645. \u062f\u0631 \u0637\u0648\u0644 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634 \u06cc\u0627\u062f \u0645\u06cc\u200c\u06af\u06cc\u0631\u06cc\u062f \u06a9\u0647 \u0686\u06af\u0648\u0646\u0647 SQLite \u0631\u0627 \u0628\u0647 Flask \u0645\u062a\u0635\u0644 \u06a9\u0631\u062f\u0647 \u0648 \u0645\u0641\u0647\u0648\u0645 \u0631\u0648\u0627\u0628\u0637 \u06cc\u06a9\u200c\u0628\u0647\u200c\u0686\u0646\u062f (One-to-Many Relationships) \u0631\u0627 \u062f\u0631 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u0631\u0627\u0628\u0637\u0647 \u06cc\u06a9\u200c\u0628\u0647\u200c\u0686\u0646\u062f \u0632\u0645\u0627\u0646\u06cc \u0627\u062a\u0641\u0627\u0642 \u0645\u06cc\u200c\u0627\u0641\u062a\u062f \u06a9\u0647 \u06cc\u06a9 \u0631\u06a9\u0648\u0631\u062f \u062f\u0631 \u062c\u062f\u0648\u0644 \u0627\u0635\u0644\u06cc (Parent) \u0628\u062a\u0648\u0627\u0646\u062f \u0628\u0647 \u0686\u0646\u062f \u0631\u06a9\u0648\u0631\u062f \u062f\u0631 \u062c\u062f\u0648\u0644 \u0648\u0627\u0628\u0633\u062a\u0647 (Child) \u0645\u062a\u0635\u0644 \u0634\u0648\u062f. \u0628\u0631\u0627\u06cc \u0645\u062b\u0627\u0644\u060c \u06cc\u06a9 \u0644\u06cc\u0633\u062a \u06a9\u0627\u0631\u0647\u0627 (\u0645\u062b\u0644 \u00ab\u06a9\u0627\u0631\u0647\u0627\u06cc \u062e\u0627\u0646\u0647\u00bb) \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0634\u0627\u0645\u0644 \u0686\u0646\u062f\u06cc\u0646 \u0622\u06cc\u062a\u0645 (\u0645\u062b\u0644 \u00ab\u062e\u0631\u06cc\u062f \u0645\u06cc\u0648\u0647\u00bb\u060c \u00ab\u067e\u062e\u062a\u0646 \u0634\u0627\u0645\u00bb) \u0628\u0627\u0634\u062f. \u062c\u062f\u0648\u0644 \u0644\u06cc\u0633\u062a\u200c\u0647\u0627 \u0646\u0642\u0634 \u062c\u062f\u0648\u0644 \u0627\u0635\u0644\u06cc (Parent Table) \u0648 \u062c\u062f\u0648\u0644 \u0622\u06cc\u062a\u0645\u200c\u0647\u0627 \u0646\u0642\u0634 \u062c\u062f\u0648\u0644 \u0641\u0631\u0632\u0646\u062f (Child Table) \u0631\u0627 \u0627\u06cc\u0641\u0627 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<p>\u0645\u0627 \u0627\u0632 SQLite \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u0686\u0648\u0646 \u0628\u0633\u06cc\u0627\u0631 \u0633\u0628\u06a9 \u0648 \u0642\u0627\u0628\u0644 \u062d\u0645\u0644 \u0627\u0633\u062a \u0648 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u0647\u06cc\u0686 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u067e\u06cc\u0686\u06cc\u062f\u0647\u200c\u0627\u06cc \u0646\u062f\u0627\u0631\u062f. \u0627\u06cc\u0646 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u06af\u0632\u06cc\u0646\u0647\u200c\u0627\u06cc \u0639\u0627\u0644\u06cc \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a \u0646\u0645\u0648\u0646\u0647\u200c\u0647\u0627\u06cc \u0627\u0648\u0644\u06cc\u0647 (Prototype) \u067e\u06cc\u0634 \u0627\u0632 \u0627\u0646\u062a\u0642\u0627\u0644 \u0628\u0647 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633\u200c\u0647\u0627\u06cc \u0628\u0632\u0631\u06af\u062a\u0631 \u0645\u062b\u0644 PostgreSQL \u06cc\u0627 MySQL \u0631\u0648\u06cc \u0633\u0631\u0648\u0631 \u0627\u0628\u0631\u06cc \u0627\u0633\u062a.<\/p>\n<p>\u067e\u06cc\u0634\u200c\u0646\u06cc\u0627\u0632\u0647\u0627<br \/>\n\u0628\u0631\u0627\u06cc \u062f\u0646\u0628\u0627\u0644 \u06a9\u0631\u062f\u0646 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u062f\u0627\u0631\u06cc\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 (Python 3) \u0631\u0648\u06cc \u0633\u06cc\u0633\u062a\u0645 \u0645\u062d\u0644\u06cc \u06cc\u0627 \u0633\u0631\u0648\u0631 \u0644\u06cc\u0646\u0648\u06a9\u0633.<\/p>\n<p>\u0622\u0634\u0646\u0627\u06cc\u06cc \u067e\u0627\u06cc\u0647 \u0628\u0627 \u0645\u0641\u0627\u0647\u06cc\u0645 \u0627\u0648\u0644\u06cc\u0647 Flask \u0645\u062b\u0644 \u0633\u0627\u062e\u062a Route\u0647\u0627 \u0648 \u0642\u0627\u0644\u0628\u200c\u0647\u0627\u06cc HTML (\u0647\u0631\u0686\u0646\u062f \u06af\u0627\u0645\u200c\u0628\u0647\u200c\u06af\u0627\u0645 \u0647\u0645\u0631\u0627\u0647 \u0634\u0645\u0627 \u062e\u0648\u0627\u0647\u06cc\u0645 \u0628\u0648\u062f).<\/p>\n<p>\u06af\u0627\u0645 \u0627\u0648\u0644 \u2014 \u0633\u0627\u062e\u062a \u0648 \u0622\u0645\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633<br \/>\n\u0627\u0628\u062a\u062f\u0627 \u0645\u062d\u06cc\u0637 \u0645\u062c\u0627\u0632\u06cc (Virtual Environment) \u062e\u0648\u062f \u0631\u0627 \u0641\u0639\u0627\u0644 \u06a9\u0646\u06cc\u062f. \u0627\u06af\u0631 \u0646\u0627\u0645 \u067e\u0648\u0634\u0647 \u067e\u0631\u0648\u0698\u0647 \u0634\u0645\u0627 flask_todo \u0627\u0633\u062a\u060c \u0648\u0627\u0631\u062f \u0622\u0646 \u0634\u062f\u0647 \u0648 \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n<p>Bash<br \/>\nsource env\/bin\/activate<br \/>\n\u062d\u0627\u0644\u0627 \u0641\u0631\u06cc\u0645\u200c\u0648\u0631\u06a9 Flask \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0645\u06cc\u0631\u0648\u0631 PyPI \u067e\u0627\u0631\u0645\u06cc\u0646 \u06a9\u0644\u0648\u062f \u0646\u0635\u0628 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u062a\u0627 \u0641\u0631\u0627\u06cc\u0646\u062f \u062f\u0627\u0646\u0644\u0648\u062f \u0628\u062f\u0648\u0646 \u0645\u0634\u06a9\u0644 \u062a\u062d\u0631\u06cc\u0645 \u06cc\u0627 \u06a9\u0646\u062f\u06cc \u0627\u0646\u062c\u0627\u0645 \u0634\u0648\u062f:<\/p>\n<p>Bash<br \/>\npip install flask -i https:\/\/pypi.parmincloud.ir\/simple\/<br \/>\n\u067e\u0633 \u0627\u0632 \u0646\u0635\u0628\u060c \u0628\u0627\u06cc\u062f \u0641\u0627\u06cc\u0644 \u0627\u0633\u06a9\u06cc\u0645\u0627\u06cc \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 (schema.sql) \u0631\u0627 \u0628\u0633\u0627\u0632\u06cc\u0645. \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u062d\u0627\u0648\u06cc \u062f\u0633\u062a\u0648\u0631\u0627\u062a SQL \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a \u062f\u0648 \u062c\u062f\u0648\u0644 \u0627\u0633\u062a: \u062c\u062f\u0648\u0644 lists \u0628\u0631\u0627\u06cc \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0644\u06cc\u0633\u062a\u200c\u0647\u0627 \u0648 \u062c\u062f\u0648\u0644 items \u0628\u0631\u0627\u06cc \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0622\u06cc\u062a\u0645\u200c\u0647\u0627\u06cc \u0647\u0631 \u0644\u06cc\u0633\u062a.<\/p>\n<p>\u0641\u0627\u06cc\u0644 \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u0648 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f:<\/p>\n<p>Bash<br \/>\nnano schema.sql<br \/>\n\u06a9\u062f\u0647\u0627\u06cc \u0632\u06cc\u0631 \u0631\u0627 \u062f\u0631\u0648\u0646 \u0641\u0627\u06cc\u0644 \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f:<\/p>\n<p>SQL<br \/>\nDROP TABLE IF EXISTS lists;<br \/>\nDROP TABLE IF EXISTS items;<\/p>\n<p>CREATE TABLE lists (<br \/>\nid INTEGER PRIMARY KEY AUTOINCREMENT,<br \/>\ncreated TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,<br \/>\ntitle TEXT NOT NULL<br \/>\n);<\/p>\n<p>CREATE TABLE items (<br \/>\nid INTEGER PRIMARY KEY AUTOINCREMENT,<br \/>\nlist_id INTEGER NOT NULL,<br \/>\ncreated TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,<br \/>\ncontent TEXT NOT NULL,<br \/>\nFOREIGN KEY (list_id) REFERENCES lists (id)<br \/>\n);<br \/>\n\u0641\u0627\u06cc\u0644 \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0631\u062f\u0647 \u0648 \u0628\u0628\u0646\u062f\u06cc\u062f.<\/p>\n<p>\u0628\u0631\u0631\u0633\u06cc \u0633\u0627\u062e\u062a\u0627\u0631 \u062c\u062f\u0648\u0644\u200c\u0647\u0627:<br \/>\n\u062f\u0633\u062a\u0648\u0631\u0627\u062a DROP TABLE: \u062c\u062f\u0627\u0648\u0644 \u0642\u062f\u06cc\u0645\u06cc \u0631\u0627 \u062d\u0630\u0641 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f \u062a\u0627 \u062f\u0631 \u0635\u0648\u0631\u062a \u0627\u062c\u0631\u0627\u06cc \u0645\u062c\u062f\u062f script\u060c \u062a\u062f\u0627\u062e\u0644\u06cc \u0627\u06cc\u062c\u0627\u062f \u0646\u0634\u0648\u062f.<\/p>\n<p>\u062c\u062f\u0648\u0644 lists: \u062f\u0627\u0631\u0627\u06cc \u0633\u062a\u0648\u0646\u200c\u0647\u0627\u06cc id (\u06a9\u0644\u06cc\u062f \u0627\u0635\u0644\u06cc)\u060c created (\u0632\u0645\u0627\u0646 \u0633\u0627\u062e\u062a) \u0648 title (\u0639\u0646\u0648\u0627\u0646 \u0644\u06cc\u0633\u062a) \u0627\u0633\u062a.<\/p>\n<p>\u062c\u062f\u0648\u0644 items: \u0639\u0644\u0627\u0648\u0647 \u0628\u0631 ID \u0648 \u0645\u062d\u062a\u0648\u0627 (content)\u060c \u06cc\u06a9 \u0633\u062a\u0648\u0646 \u0628\u0647 \u0646\u0627\u0645 list_id \u062f\u0627\u0631\u062f.<\/p>\n<p>\u06a9\u0644\u06cc\u062f \u062e\u0627\u0631\u062c\u06cc (FOREIGN KEY): \u0628\u0627 \u062f\u0633\u062a\u0648\u0631 FOREIGN KEY (list_id) REFERENCES lists (id) \u0645\u0634\u062e\u0635 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0633\u062a\u0648\u0646 list_id \u0628\u0647 \u06a9\u0644\u06cc\u062f \u0627\u0635\u0644\u06cc \u062c\u062f\u0648\u0644 lists \u0627\u0634\u0627\u0631\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0627\u06cc\u0646 \u062f\u0642\u06cc\u0642\u0627\u064b \u0647\u0645\u0627\u0646 \u0628\u0631\u0642\u0631\u0627\u0631\u06a9\u0646\u0646\u062f\u0647 \u0631\u0627\u0628\u0637\u0647 \u06cc\u06a9\u200c\u0628\u0647\u200c\u0686\u0646\u062f \u0627\u0633\u062a.<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0645\u0642\u062f\u0627\u0631\u062f\u0647\u06cc \u0627\u0648\u0644\u06cc\u0647 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0648 \u062a\u0632\u0631\u06cc\u0642 \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc \u0646\u0645\u0648\u0646\u0647\u060c \u0641\u0627\u06cc\u0644 init_db.py \u0631\u0627 \u0628\u0633\u0627\u0632\u06cc\u062f:<\/p>\n<p>Bash<br \/>\nnano init_db.py<br \/>\n\u06a9\u062f\u0647\u0627\u06cc \u0632\u06cc\u0631 \u0631\u0627 \u062f\u0631\u0648\u0646 \u0622\u0646 \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f:<\/p>\n<p>Python<br \/>\nimport sqlite3<\/p>\n<p>connection = sqlite3.connect(&#8216;database.db&#8217;)<\/p>\n<p>with open(&#8216;schema.sql&#8217;) as f:<br \/>\nconnection.executescript(f.read())<\/p>\n<p>cur = connection.cursor()<\/p>\n<p>cur.execute(&#8220;INSERT INTO lists (title) VALUES (?)&#8221;, (&#8216;Work&#8217;,))<br \/>\ncur.execute(&#8220;INSERT INTO lists (title) VALUES (?)&#8221;, (&#8216;Home&#8217;,))<br \/>\ncur.execute(&#8220;INSERT INTO lists (title) VALUES (?)&#8221;, (&#8216;Study&#8217;,))<\/p>\n<p>cur.execute(&#8220;INSERT INTO items (list_id, content) VALUES (?, ?)&#8221;, (1, &#8216;Morning meeting&#8217;))<br \/>\ncur.execute(&#8220;INSERT INTO items (list_id, content) VALUES (?, ?)&#8221;, (2, &#8216;Buy fruit&#8217;))<br \/>\ncur.execute(&#8220;INSERT INTO items (list_id, content) VALUES (?, ?)&#8221;, (2, &#8216;Cook dinner&#8217;))<br \/>\ncur.execute(&#8220;INSERT INTO items (list_id, content) VALUES (?, ?)&#8221;, (3, &#8216;Learn Flask&#8217;))<br \/>\ncur.execute(&#8220;INSERT INTO items (list_id, content) VALUES (?, ?)&#8221;, (3, &#8216;Learn SQLite&#8217;))<\/p>\n<p>connection.commit()<br \/>\nconnection.close()<br \/>\n\u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n<p>Bash<br \/>\npython init_db.py<br \/>\n\u0627\u06a9\u0646\u0648\u0646 \u0641\u0627\u06cc\u0644\u06cc \u0628\u0647 \u0646\u0627\u0645 database.db \u062f\u0631 \u067e\u0648\u0634\u0647 \u067e\u0631\u0648\u0698\u0647 \u0634\u0645\u0627 \u0627\u06cc\u062c\u0627\u062f \u0634\u062f\u0647 \u0627\u0633\u062a \u06a9\u0647 \u062d\u0627\u0648\u06cc \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc \u0627\u0648\u0644\u06cc\u0647 \u0627\u0633\u062a.<\/p>\n<p>\u06af\u0627\u0645 \u062f\u0648\u0645 \u2014 \u0646\u0645\u0627\u06cc\u0634 \u0644\u06cc\u0633\u062a\u200c\u0647\u0627 \u0648 \u0622\u06cc\u062a\u0645\u200c\u0647\u0627 \u062f\u0631 Flask<br \/>\n\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647\u060c \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0631\u0627 \u0628\u0647 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 Flask \u0645\u062a\u0635\u0644 \u06a9\u0631\u062f\u0647 \u0648 \u062f\u0627\u062f\u0647\u200c\u0647\u0627 \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062f\u0633\u062a\u0648\u0631\u0627\u062a JOIN \u062f\u0631 \u0635\u0641\u062d\u0647 \u0627\u0635\u0644\u06cc \u0646\u0645\u0627\u06cc\u0634 \u0645\u06cc\u200c\u062f\u0647\u06cc\u0645.<\/p>\n<p>\u0641\u0627\u06cc\u0644 \u0627\u0635\u0644\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u06cc\u0639\u0646\u06cc app.py \u0631\u0627 \u0628\u0633\u0627\u0632\u06cc\u062f:<\/p>\n<p>Bash<br \/>\nnano app.py<br \/>\n\u06a9\u062f\u0647\u0627\u06cc \u0632\u06cc\u0631 \u0631\u0627 \u062f\u0631\u0648\u0646 \u0622\u0646 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f:<\/p>\n<p>Python<br \/>\nfrom itertools import groupby<br \/>\nimport sqlite3<br \/>\nfrom flask import Flask, render_template, request, flash, redirect, url_for<\/p>\n<p>def get_db_connection():<br \/>\nconn = sqlite3.connect(&#8216;database.db&#8217;)<br \/>\nconn.row_factory = sqlite3.Row<br \/>\nreturn conn<\/p>\n<p>app = Flask(__name__)<br \/>\napp.config[&#8216;SECRET_KEY&#8217;] = &#8216;your_secret_key_here&#8217;<\/p>\n<p>@app.route(&#8216;\/&#8217;)<br \/>\ndef index():<br \/>\nconn = get_db_connection()<br \/>\ntodos = conn.execute(&#8216;SELECT i.content, l.title FROM items i JOIN lists l \\<br \/>\nON i.list_id = l.id ORDER BY l.title;&#8217;).fetchall()<\/p>\n<p>lists = {}<br \/>\nfor k, g in groupby(todos, key=lambda t: t[&#8216;title&#8217;]):<br \/>\nlists[k] = list(g)<\/p>\n<p>conn.close()<br \/>\nreturn render_template(&#8216;index.html&#8217;, lists=lists)<br \/>\n\u062a\u062d\u0644\u06cc\u0644 \u06a9\u062f:<br \/>\n\u062a\u0627\u0628\u0639 get_db_connection: \u0627\u062a\u0635\u0627\u0644 \u0628\u0647 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0631\u0627 \u0628\u0631\u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u062e\u0637 conn.row_factory = sqlite3.Row \u0628\u0627\u0639\u062b \u0645\u06cc\u200c\u0634\u0648\u062f \u062e\u0631\u0648\u062c\u06cc \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0645\u0627\u0646\u0646\u062f \u062f\u06cc\u06a9\u0634\u0646\u0631\u06cc\u200c\u0647\u0627\u06cc \u067e\u0627\u06cc\u062a\u0648\u0646 \u0628\u0627 \u0646\u0627\u0645 \u0633\u062a\u0648\u0646\u200c\u0647\u0627 \u0642\u0627\u0628\u0644 \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0627\u0634\u062f.<\/p>\n<p>\u06a9\u0648\u0626\u0631\u06cc JOIN: \u0628\u0627 \u062f\u0633\u062a\u0648\u0631 JOIN lists l ON i.list_id = l.id \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062f\u0648 \u062c\u062f\u0648\u0644 \u0631\u0627 \u0645\u062a\u0635\u0644 \u06a9\u0631\u062f\u0647 \u0648 \u0622\u06cc\u062a\u0645\u200c\u0647\u0627 \u0631\u0627 \u0628\u0631 \u0627\u0633\u0627\u0633 \u0639\u0646\u0648\u0627\u0646 \u0644\u06cc\u0633\u062a \u062f\u0633\u062a\u0647\u200c\u0628\u0646\u062f\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.<\/p>\n<p>\u062a\u0627\u0628\u0639 groupby: \u062e\u0631\u0648\u062c\u06cc \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0631\u0627 \u0628\u0631 \u0627\u0633\u0627\u0633 \u0639\u0646\u0648\u0627\u0646 \u0644\u06cc\u0633\u062a (title) \u06af\u0631\u0648\u0647 \u0628\u0646\u062f\u06cc \u06a9\u0631\u062f\u0647 \u0648 \u0633\u0627\u062e\u062a\u0627\u0631\u06cc \u0634\u0628\u06cc\u0647 \u0628\u0647 \u0627\u06cc\u0646 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f:<\/p>\n<p>Python<br \/>\n{<br \/>\n&#8216;Home&#8217;: [&#8216;Buy fruit&#8217;, &#8216;Cook dinner&#8217;],<br \/>\n&#8216;Study&#8217;: [&#8216;Learn Flask&#8217;, &#8216;Learn SQLite&#8217;]<br \/>\n}<br \/>\n\u062d\u0627\u0644\u0627 \u0642\u0627\u0644\u0628\u200c\u0647\u0627\u06cc HTML \u0631\u0627 \u0645\u06cc\u200c\u0633\u0627\u0632\u06cc\u0645. \u067e\u0648\u0634\u0647 templates \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f\u0647 \u0648 \u0641\u0627\u06cc\u0644 base.html \u0631\u0627 \u062f\u0631 \u0622\u0646 \u0628\u0633\u0627\u0632\u06cc\u062f:<\/p>\n<p>Bash<br \/>\nmkdir templates<br \/>\nnano templates\/base.html<br \/>\n\u0645\u062d\u062a\u0648\u0627\u06cc base.html:<\/p>\n<p>HTML<br \/>\n&lt;!doctype html&gt;<br \/>\n&lt;html lang=&#8221;fa&#8221; dir=&#8221;rtl&#8221;&gt;<br \/>\n&lt;head&gt;<br \/>\n&lt;meta charset=&#8221;utf-8&#8243;&gt;<br \/>\n&lt;meta name=&#8221;viewport&#8221; content=&#8221;width=device-width, initial-scale=1, shrink-to-fit=no&#8221;&gt;<br \/>\n&lt;link rel=&#8221;stylesheet&#8221; href=&#8221;https:\/\/cdn.jsdelivr.net\/npm\/bootstrap@4.6.2\/dist\/css\/bootstrap.min.css&#8221;&gt;<br \/>\n&lt;title&gt;{% block title %} {% endblock %}&lt;\/title&gt;<br \/>\n&lt;\/head&gt;<br \/>\n&lt;body&gt;<br \/>\n&lt;nav class=&#8221;navbar navbar-expand-md navbar-light bg-light&#8221;&gt;<br \/>\n&lt;a class=&#8221;navbar-brand&#8221; href=&#8221;{{ url_for(&#8216;index&#8217;)}}&#8221;&gt;\u0641\u0644\u0627\u0633\u06a9 \u062a\u0648-\u062f\u0648&lt;\/a&gt;<br \/>\n&lt;div class=&#8221;collapse navbar-collapse&#8221; id=&#8221;navbarNav&#8221;&gt;<br \/>\n&lt;ul class=&#8221;navbar-nav&#8221;&gt;<br \/>\n&lt;li class=&#8221;nav-item active&#8221;&gt;<br \/>\n&lt;a class=&#8221;nav-link&#8221; href=&#8221;{{ url_for(&#8216;create&#8217;) }}&#8221;&gt;\u0622\u06cc\u062a\u0645 \u062c\u062f\u06cc\u062f&lt;\/a&gt;<br \/>\n&lt;\/li&gt;<br \/>\n&lt;\/ul&gt;<br \/>\n&lt;\/div&gt;<br \/>\n&lt;\/nav&gt;<br \/>\n&lt;div class=&#8221;container mt-4&#8243;&gt;<br \/>\n{% for message in get_flashed_messages() %}<br \/>\n&lt;div class=&#8221;alert alert-danger&#8221;&gt;{{ message }}&lt;\/div&gt;<br \/>\n{% endfor %}<br \/>\n{% block content %} {% endblock %}<br \/>\n&lt;\/div&gt;<br \/>\n&lt;\/body&gt;<br \/>\n&lt;\/html&gt;<br \/>\n\u0633\u067e\u0633 \u0641\u0627\u06cc\u0644 index.html \u0631\u0627 \u0628\u0633\u0627\u0632\u06cc\u062f:<\/p>\n<p>Bash<br \/>\nnano templates\/index.html<br \/>\n\u06a9\u062f\u0647\u0627\u06cc \u0632\u06cc\u0631 \u0631\u0627 \u062f\u0631 index.html \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f:<\/p>\n<p>HTML<br \/>\n{% extends &#8216;base.html&#8217; %}<\/p>\n<p>{% block content %}<br \/>\n&lt;h1&gt;{% block title %} \u0644\u06cc\u0633\u062a \u06a9\u0627\u0631\u0647\u0627\u06cc \u0645\u0646 {% endblock %}&lt;\/h1&gt;<br \/>\n&lt;div class=&#8221;row mt-4&#8243;&gt;<br \/>\n{% for list, items in lists.items() %}<br \/>\n&lt;div class=&#8221;col-md-4&#8243;&gt;<br \/>\n&lt;div class=&#8221;card mb-4&#8243;&gt;<br \/>\n&lt;div class=&#8221;card-header bg-primary text-white&#8221;&gt;<br \/>\n&lt;h3&gt;{{ list }}&lt;\/h3&gt;<br \/>\n&lt;\/div&gt;<br \/>\n&lt;ul class=&#8221;list-group list-group-flush&#8221;&gt;<br \/>\n{% for item in items %}<br \/>\n&lt;li class=&#8221;list-group-item&#8221;&gt;{{ item[&#8216;content&#8217;] }}&lt;\/li&gt;<br \/>\n{% endfor %}<br \/>\n&lt;\/ul&gt;<br \/>\n&lt;\/div&gt;<br \/>\n&lt;\/div&gt;<br \/>\n{% endfor %}<br \/>\n&lt;\/div&gt;<br \/>\n{% endblock %}<br \/>\n\u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647\u060c \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0645\u062d\u06cc\u0637\u06cc \u0631\u0627 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0631\u062f\u0647 \u0648 \u0622\u0646 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n<p>Bash<br \/>\nexport FLASK_APP=app<br \/>\nexport FLASK_ENV=development<br \/>\nflask run<br \/>\n\u0628\u0627 \u0648\u0631\u0648\u062f \u0628\u0647 \u0622\u062f\u0631\u0633 [http:\/\/127.0.0.1:5000](http:\/\/127.0.0.1:5000) \u062f\u0631 \u0645\u0631\u0648\u0631\u06af\u0631\u060c \u0644\u06cc\u0633\u062a \u06a9\u0627\u0631\u0647\u0627 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u062f \u06a9\u0631\u062f.<\/p>\n<p>\u06af\u0627\u0645 \u0633\u0648\u0645 \u2014 \u0627\u0641\u0632\u0648\u062f\u0646 \u0622\u06cc\u062a\u0645\u200c\u0647\u0627\u06cc \u062c\u062f\u06cc\u062f \u0628\u0647 \u0644\u06cc\u0633\u062a<br \/>\n\u062f\u0631 \u0627\u06cc\u0646 \u06af\u0627\u0645\u060c \u06cc\u06a9 \u0641\u0631\u0645 \u0633\u0627\u062e\u062a \u0622\u06cc\u062a\u0645 \u062c\u062f\u06cc\u062f \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u062a\u0627 \u06a9\u0627\u0631\u0628\u0631 \u0628\u062a\u0648\u0627\u0646\u062f \u0645\u062a\u0646\u06cc \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0631\u062f\u0647 \u0648 \u0645\u0634\u062e\u0635 \u06a9\u0646\u062f \u06a9\u0647 \u0627\u06cc\u0646 \u0622\u06cc\u062a\u0645 \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u06a9\u062f\u0627\u0645 \u0644\u06cc\u0633\u062a \u0627\u0633\u062a.<\/p>\n<p>\u0641\u0627\u06cc\u0644 app.py \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f:<\/p>\n<p>Bash<br \/>\nnano app.py<br \/>\n\u0631\u0648\u062a \/create \u0631\u0627 \u0628\u0647 \u0627\u0646\u062a\u0647\u0627\u06cc \u0641\u0627\u06cc\u0644 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<p>Python<br \/>\n@app.route(&#8216;\/create\/&#8217;, methods=(&#8216;GET&#8217;, &#8216;POST&#8217;))<br \/>\ndef create():<br \/>\nconn = get_db_connection()<\/p>\n<p>if request.method == &#8216;POST&#8217;:<br \/>\ncontent = request.form[&#8216;content&#8217;]<br \/>\nlist_title = request.form[&#8216;list&#8217;]<\/p>\n<p>if not content:<br \/>\nflash(&#8216;\u0648\u0627\u0631\u062f \u06a9\u0631\u062f\u0646 \u0645\u062a\u0646 \u06a9\u0627\u0631\u06cc \u0627\u0644\u0632\u0627\u0645\u06cc \u0627\u0633\u062a!&#8217;)<br \/>\nreturn redirect(url_for(&#8216;index&#8217;))<\/p>\n<p># \u06cc\u0627\u0641\u062a\u0646 ID \u0644\u06cc\u0633\u062a \u0628\u0631 \u0627\u0633\u0627\u0633 \u0639\u0646\u0648\u0627\u0646 \u0622\u0646<br \/>\nlist_id = conn.execute(&#8216;SELECT id FROM lists WHERE title = (?);&#8217;,<br \/>\n(list_title,)).fetchone()[&#8216;id&#8217;]<\/p>\n<p># \u062b\u0628\u062a \u0622\u06cc\u062a\u0645 \u062c\u062f\u06cc\u062f \u062f\u0631 \u062c\u062f\u0648\u0644 items<br \/>\nconn.execute(&#8216;INSERT INTO items (content, list_id) VALUES (?, ?)&#8217;,<br \/>\n(content, list_id))<br \/>\nconn.commit()<br \/>\nconn.close()<br \/>\nreturn redirect(url_for(&#8216;index&#8217;))<\/p>\n<p>lists = conn.execute(&#8216;SELECT title FROM lists;&#8217;).fetchall()<br \/>\nconn.close()<br \/>\nreturn render_template(&#8216;create.html&#8217;, lists=lists)<br \/>\n\u062d\u0627\u0644\u0627 \u0642\u0627\u0644\u0628 HTML \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0641\u0631\u0645 \u0627\u0641\u0632\u0648\u062f\u0646 \u0622\u06cc\u062a\u0645 \u06cc\u0639\u0646\u06cc create.html \u0631\u0627 \u0628\u0633\u0627\u0632\u06cc\u062f:<\/p>\n<p>Bash<br \/>\nnano templates\/create.html<br \/>\n\u06a9\u062f\u0647\u0627\u06cc \u0632\u06cc\u0631 \u0631\u0627 \u062f\u0631\u0648\u0646 \u0641\u0627\u06cc\u0644 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<p>HTML<br \/>\n{% extends &#8216;base.html&#8217; %}<\/p>\n<p>{% block content %}<br \/>\n&lt;h1&gt;{% block title %} \u0633\u0627\u062e\u062a \u0622\u06cc\u062a\u0645 \u062c\u062f\u06cc\u062f {% endblock %}&lt;\/h1&gt;<\/p>\n<p>&lt;form method=&#8221;post&#8221; class=&#8221;mt-4&#8243;&gt;<br \/>\n&lt;div class=&#8221;form-group&#8221;&gt;<br \/>\n&lt;label for=&#8221;content&#8221;&gt;\u0639\u0646\u0648\u0627\u0646 \u06a9\u0627\u0631&lt;\/label&gt;<br \/>\n&lt;input type=&#8221;text&#8221; name=&#8221;content&#8221; placeholder=&#8221;\u0645\u062b\u0644\u0627\u064b: \u0645\u0637\u0627\u0644\u0639\u0647 \u0645\u0633\u062a\u0646\u062f\u0627\u062a \u067e\u0627\u0631\u0645\u06cc\u0646 \u06a9\u0644\u0648\u062f&#8221;<br \/>\nclass=&#8221;form-control&#8221; value=&#8221;{{ request.form[&#8216;content&#8217;] }}&#8221;&gt;<br \/>\n&lt;\/div&gt;<\/p>\n<p>&lt;div class=&#8221;form-group&#8221;&gt;<br \/>\n&lt;label for=&#8221;list&#8221;&gt;\u0627\u0646\u062a\u062e\u0627\u0628 \u0644\u06cc\u0633\u062a&lt;\/label&gt;<br \/>\n&lt;select class=&#8221;form-control&#8221; name=&#8221;list&#8221;&gt;<br \/>\n{% for list in lists %}<br \/>\n&lt;option value=&#8221;{{ list[&#8216;title&#8217;] }}&#8221;&gt;{{ list[&#8216;title&#8217;] }}&lt;\/option&gt;<br \/>\n{% endfor %}<br \/>\n&lt;\/select&gt;<br \/>\n&lt;\/div&gt;<\/p>\n<p>&lt;button type=&#8221;submit&#8221; class=&#8221;btn btn-success&#8221;&gt;\u062b\u0628\u062a \u0622\u06cc\u062a\u0645&lt;\/button&gt;<br \/>\n&lt;\/form&gt;<br \/>\n{% endblock %}<br \/>\n\u0645\u062c\u062f\u062f\u0627\u064b \u0633\u0631\u0648\u0631 \u062a\u0648\u0633\u0639\u0647 Flask \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n<p>Bash<br \/>\nflask run<br \/>\n\u0628\u0627 \u0631\u0641\u062a\u0646 \u0628\u0647 \u0645\u0633\u06cc\u0631 [http:\/\/127.0.0.1:5000\/create](http:\/\/127.0.0.1:5000\/create) \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0641\u0631\u0645 \u0631\u0627 \u062a\u0633\u062a \u06a9\u0646\u06cc\u062f. \u0627\u06af\u0631 \u0645\u062a\u0646\u06cc \u0648\u0627\u0631\u062f \u0646\u06a9\u0646\u06cc\u062f\u060c \u067e\u06cc\u063a\u0627\u0645 \u062e\u0637\u0627 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f \u0648 \u062f\u0631 \u0635\u0648\u0631\u062a \u0648\u0627\u0631\u062f \u06a9\u0631\u062f\u0646\u060c \u0622\u06cc\u062a\u0645 \u062c\u062f\u06cc\u062f \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u062a\u062d\u062a \u0644\u06cc\u0633\u062a \u0645\u0631\u0628\u0648\u0637\u0647 \u062f\u0631 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u062b\u0628\u062a \u0634\u062f\u0647 \u0648 \u062f\u0631 \u0635\u0641\u062d\u0647 \u0627\u0635\u0644\u06cc \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n<p>\u062c\u0645\u0639\u200c\u0628\u0646\u062f\u06cc<br \/>\n\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647 \u0622\u0645\u0648\u0632\u0634\u06cc\u060c \u0646\u062d\u0648\u0647 \u06a9\u0627\u0631 \u0628\u0627 SQLite \u062f\u0631 Flask \u0648 \u0633\u0627\u062e\u062a \u0631\u0648\u0627\u0628\u0637 \u06cc\u06a9\u200c\u0628\u0647\u200c\u0686\u0646\u062f (One-to-Many) \u0631\u0627 \u0628\u0627 \u0647\u0645 \u0645\u0631\u0648\u0631 \u06a9\u0631\u062f\u06cc\u0645. \u06cc\u0627\u062f \u06af\u0631\u0641\u062a\u06cc\u062f \u06a9\u0647 \u0686\u06af\u0648\u0646\u0647 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u062e\u0627\u0631\u062c\u06cc (Foreign Keys) \u062c\u062f\u0627\u0648\u0644 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0631\u0627 \u0628\u0647 \u0647\u0645 \u0645\u062a\u0635\u0644 \u06a9\u0646\u06cc\u062f\u060c \u0628\u0627 \u062f\u0633\u062a\u0648\u0631\u0627\u062a JOIN \u062f\u0627\u062f\u0647\u200c\u0647\u0627 \u0631\u0627 \u0627\u0633\u062a\u062e\u0631\u0627\u062c \u06a9\u0631\u062f\u0647 \u0648 \u0641\u0631\u0645\u200c\u0647\u0627\u06cc \u062f\u0631\u062c \u062f\u0627\u062f\u0647 \u0648\u0627\u0628\u0633\u062a\u0647 \u0631\u0627 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0646\u0645\u0627\u06cc\u06cc\u062f.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>\u0627\u0632 \u0647\u0645\u0631\u0627\u0647\u06cc \u0634\u0645\u0627 \u0628\u0627 <strong><a href=\"https:\/\/parmin.cloud\/\">\u067e\u0627\u0631\u0645\u06cc\u0646 \u06a9\u0644\u0648\u062f<\/a><\/strong> \u0633\u067e\u0627\u0633\u06af\u0632\u0627\u0631\u06cc\u0645.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0645\u0642\u062f\u0645\u0647 \u0641\u0644\u0627\u0633\u06a9 (Flask) \u06cc\u06a9\u06cc \u0627\u0632 \u0645\u062d\u0628\u0648\u0628\u200c\u062a\u0631\u06cc\u0646 \u0641\u0631\u06cc\u0645\u200c\u0648\u0631\u06a9\u200c\u0647\u0627\u06cc \u0633\u0628\u06a9 \u0648 \u0642\u062f\u0631\u062a\u0645\u0646\u062f \u067e\u0627\u06cc\u062a\u0648\u0646 \u0628\u0631\u0627\u06cc \u062a\u0648\u0633\u0639\u0647 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc \u0648\u0628 \u0627\u0633\u062a \u0648 SQLite \u0646\u06cc\u0632 \u06cc\u06a9 \u067e\u0627\u06cc\u06af\u0627\u0647\u200c\u062f\u0627\u062f\u0647 \u0633\u0631\u06cc\u0639 \u0648 \u0628\u062f\u0648\u0646 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u0633\u0631\u0648\u0631 \u0645\u062c\u0632\u0627\u0633\u062a \u06a9\u0647 \u0628\u0647\u200c\u0631\u0627\u062d\u062a\u06cc \u06a9\u0646\u0627\u0631 \u067e\u0627\u06cc\u062a\u0648\u0646 \u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647 \u0622\u0645\u0648\u0632\u0634\u06cc\u060c \u0642\u0635\u062f \u062f\u0627\u0631\u06cc\u0645 \u0628\u0627 \u062a\u0631\u06a9\u06cc\u0628 Flask \u0648 SQLite \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0627\u0631\u0647\u0627\u06cc \u0631\u0648\u0632\u0645\u0631\u0647 (To-Do List) \u0628\u0633\u0627\u0632\u06cc\u0645. \u062f\u0631 \u0637\u0648\u0644 &hellip;<\/p>\n","protected":false},"author":9,"featured_media":6721,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8,343],"tags":[],"class_list":["post-6720","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-8","category-python"],"_links":{"self":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts\/6720","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=6720"}],"version-history":[{"count":0,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts\/6720\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/media\/6721"}],"wp:attachment":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/media?parent=6720"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/categories?post=6720"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/tags?post=6720"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}