{"id":49915,"date":"2024-01-07T04:27:45","date_gmt":"2023-12-10T12:37:38","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%a4%87%e5%bf%98%e5%bd%95%ef%bc%9a%e4%bd%bf%e7%94%a8python-django%ef%bc%8c%e5%9c%a8postgres%e4%b8%8a%e5%88%9b%e5%bb%ba%e7%ae%80%e5%8d%95%e7%9a%84%e7%95%8c%e9%9d%a2%e3%80%82\/"},"modified":"2024-05-04T17:14:43","modified_gmt":"2024-05-04T09:14:43","slug":"%e5%a4%87%e5%bf%98%e5%bd%95%ef%bc%9a%e4%bd%bf%e7%94%a8python-django%ef%bc%8c%e5%9c%a8postgres%e4%b8%8a%e5%88%9b%e5%bb%ba%e7%ae%80%e5%8d%95%e7%9a%84%e7%95%8c%e9%9d%a2%e3%80%82","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%a4%87%e5%bf%98%e5%bd%95%ef%bc%9a%e4%bd%bf%e7%94%a8python-django%ef%bc%8c%e5%9c%a8postgres%e4%b8%8a%e5%88%9b%e5%bb%ba%e7%ae%80%e5%8d%95%e7%9a%84%e7%95%8c%e9%9d%a2%e3%80%82\/","title":{"rendered":"\u5907\u5fd8\u5f55\uff1a\u4f7f\u7528Python + Django\uff0c\u5728Postgres\u4e0a\u521b\u5efa\u7b80\u5355\u7684\u754c\u9762"},"content":{"rendered":"<p>\u53ea\u4f7f\u7528Windows + Python3.9\u6765\u5b8c\u6210\u3002Django\u7248\u672c\u4e3a3.2.8\u3002<br \/>\n\u6b64\u6b21\u4e0d\u662f\u8003\u8651\u4f7f\u7528REST\uff0c\u800c\u662f\u5047\u8bbe\u4f7f\u7528\u666e\u901a\u7684\u754c\u9762\uff0c\u6240\u4ee5\u4e0d\u4f7f\u7528Django REST\u6846\u67b6\u3002<\/p>\n<h2>Django\u7684\u51c6\u5907<\/h2>\n<p>\u5047\u8bbe\u5df2\u7ecf\u5b89\u88c5\u4e86Python\u3002<\/p>\n<p>\u5148\u8bd5\u8bd5\u5728\u865a\u62df\u73af\u5883\u4e2d\u8fd0\u884c\uff0c\u6240\u4ee5\u9700\u8981\u5b89\u88c5virtualenv\uff1a<br \/>\npip install virtualenv<br \/>\n\u5728\u9002\u5f53\u7684\u6587\u4ef6\u5939\u521b\u5efa\u73af\u5883\uff1a<br \/>\nvirtualenv env1<br \/>\n\u8fdb\u5165\u73af\u5883\uff1a<br \/>\nScript\/activate.bat\u6267\u884c<br \/>\n\u7136\u540e\u76f4\u63a5\u7528pip\u5b89\u88c5\uff1a<br \/>\npip install django<br \/>\n\u63a5\u7740\u5c1d\u8bd5\u786e\u8ba4\u5bfc\u5165\u662f\u5426\u6b63\u5e38\uff1a<br \/>\npy<br \/>\nimport django<br \/>\nprint(django.get_version())<\/p>\n<h2>\u7ed8\u5236\u56fe\u50cf<\/h2>\n<p>\u6682\u65f6\u5728\u5df2\u521b\u5efa\u7684\u865a\u62df\u73af\u5883\u5185\u521b\u5efa\u6d4b\u8bd5\u9879\u76ee<br \/>\ndjango-admin startproject tespt<br \/>\n\u8fdb\u5165\u8be5\u9879\u76ee\u5e76\u542f\u52a8\u3002<\/p>\n<pre class=\"post-pre\"><code>(env1) C:\\python\\env1\\testpj&gt;py manage.py runserver\r\nWatching for file changes with StatReloader\r\nPerforming system checks...\r\n\r\nSystem check identified no issues (0 silenced).\r\nYou have 18 unapplied migration(s). Your project may not work properly until you apply the\r\nRun 'python manage.py migrate' to apply them.\r\nOctober 19, 2021 - 16:06:43\r\nDjango version 3.2.8, using settings 'testpj.settings'\r\nStarting development server at http:\/\/127.0.0.1:8000\/\r\nQuit the server with CTRL-BREAK.\r\n<\/code><\/pre>\n<p>\u5f53\u66f4\u65b0\u8b66\u62a5\u51fa\u73b0\u65f6\uff0c\u65e0\u89c6\u5b83\u5e76\u8fde\u63a5\u5230localhost:8000\uff0c\u5c4f\u5e55\u4e0a\u5c06\u663e\u793a\u201c\u5b89\u88c5\u6210\u529f\uff01\u606d\u559c\uff01\u201d\u5e76\u542f\u52a8\u3002<\/p>\n<p>\u6211\u521b\u5efa\u4e00\u4e2a\u540d\u4e3amyapp\u7684\u9879\u76ee\uff0c\u4f7f\u7528python manage.py startapp myapp\u3002<\/p>\n<p>\u5c06testpj\u7684settings.py\u6587\u4ef6\u4e2d\u7684INSTALLED_APPS\u6dfb\u52a0<\/p>\n<pre class=\"post-pre\"><code>INSTALLED_APPS = [\r\n    'myapp',\r\n    'django.contrib.admin',\r\n    'django.contrib.auth',\r\n    'django.contrib.contenttypes',\r\n    'django.contrib.sessions',\r\n    'django.contrib.messages',\r\n    'django.contrib.staticfiles',\r\n]\r\n<\/code><\/pre>\n<p>\u5728\u76f8\u540c\u7684\u4f4d\u7f6e\u7684urls.py\u6587\u4ef6\u4e2d\uff0c\u9700\u8981\u6dfb\u52a0include\u8bed\u53e5\u6765\u67e5\u770bmyapp\u7684urls\u3002<br \/>\n\u203b\u9700\u8981\u5728from\u8bed\u53e5\u4e2d\u6dfb\u52a0include\u3002<\/p>\n<pre class=\"post-pre\"><code>urlpatterns = [\r\n    path('admin\/', admin.site.urls),\r\n    path('myapp\/', include('myapp.urls')),\r\n]\r\n<\/code><\/pre>\n<p>\u4e3a\u4e86\u521b\u5efa\u4e00\u4e2a\u9002\u5f53\u663e\u793a\u7684\u754c\u9762\uff0c<br \/>\n\u6682\u65f6\u521b\u5efa\u4e00\u4e2atemplates\u6587\u4ef6\u5939\u5e76\u653e\u7f6eindex.html\u6587\u4ef6\u3002(\u4f7f\u7528UTF-8\u7f16\u5199)<br \/>\n\u7531\u4e8e\u5728\u9879\u76ee\u7684\u6839\u76ee\u5f55\u4e0b\u521b\u5efa\u4e86templates\u6587\u4ef6\u5939\uff0c\u56e0\u6b64\u9700\u8981\u4fee\u6539setting.py\u6587\u4ef6\u3002<\/p>\n<pre class=\"post-pre\"><code>&lt;!DOCTYPE html&gt;\r\n&lt;html lang=\"ja\"&gt;\r\n&lt;head&gt;\r\n    &lt;meta charset=\"utf-8\"&gt;\r\n    &lt;title&gt;\u30c6\u30b9\u30c8&lt;\/title&gt;\r\n&lt;\/head&gt;\r\n&lt;body&gt;\r\n    &lt;h1&gt;\u30c6\u30b9\u30c8&lt;\/h1&gt;\r\n    &lt;div&gt;{{message}}&lt;\/div&gt;\r\n&lt;\/body&gt;\r\n&lt;\/html&gt;\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code><span class=\"n\">TEMPLATES<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[<\/span>\r\n    <span class=\"p\">{<\/span>\r\n        <span class=\"s\">'BACKEND'<\/span><span class=\"p\">:<\/span> <span class=\"s\">'django.template.backends.django.DjangoTemplates'<\/span><span class=\"p\">,<\/span>\r\n        <span class=\"s\">'DIRS'<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span> <span class=\"n\">BASE_DIR<\/span><span class=\"o\">\/<\/span><span class=\"s\">'templates'<\/span><span class=\"p\">],<\/span> <span class=\"err\">\u2605<\/span><span class=\"n\">\u3053\u3053\u3092\u5909\u66f4<\/span>\r\n        <span class=\"s\">'APP_DIRS'<\/span><span class=\"p\">:<\/span> <span class=\"bp\">True<\/span><span class=\"p\">,<\/span>\r\n<\/code><\/pre>\n<p>\u5728view.py\u4e2d\uff0c\u6211\u4eec\u9700\u8981\u8bbe\u7f6e\u8bbf\u95ee\u8be5\u6a21\u677f\u7684\u914d\u7f6e\u5e76\u4f20\u9012\u503c\u3002<\/p>\n<pre class=\"post-pre\"><code>from django.shortcuts import render\r\nfrom django.http import HttpResponse\r\n\r\n# Create your views here.\r\ndef index(request):\r\n  params = {\r\n    'message':'\u30e1\u30c3\u30bb\u30fc\u30b8'\r\n  }\r\n  return render(request, 'myapp\/index.html', params)\r\n<\/code><\/pre>\n<p>\u6211\u8fde\u4e0a\u4e86 http:\/\/localhost:8000\/myapp\/\u3002<\/p>\n<h2>\u4e0ePostgres\u7684\u8fde\u63a5<\/h2>\n<p>\u7531\u4e8e\u9700\u8981 psycopg2 \u548c psycopg2-binary\uff0c\u6240\u4ee5\u901a\u8fc7 pip \u8fdb\u884c\u5b89\u88c5\u3002<br \/>\n\u66f4\u6539 settings.py \u7684\u6570\u636e\u5e93\u8bbe\u7f6e\u3002<\/p>\n<p>\u53ea\u9700\u4e00\u4e2a\u9009\u9879\uff0c\u8bf7\u7528\u4e2d\u6587\u8fdb\u884c\u672c\u5730\u5316\u6539\u5199\uff1a<\/p>\n<p>OR\u6620\u5c04\u5f88\u9ebb\u70e6\u3002\u636e\u8bf4\u53ef\u4ee5\u6267\u884c\u539f\u59cb\u7684SQL\u3002\u5148\u8bd5\u8bd5\u8fc1\u79fb\uff0c\u597d\u50cf\u662f\u5fc5\u8981\u7684\uff0c\u6240\u4ee5\u8fdb\u884c\u4e00\u6b21\u6267\u884c\u3002<\/p>\n<p>\u8fd0\u884c\u4ee5\u4e0b\u547d\u4ee4\u751f\u6210\u6570\u636e\u5e93\u8fc1\u79fb\u6587\u4ef6\uff1a<br \/>\npython manage.py makemigrations<br \/>\n\u7136\u540e\u6267\u884c\u4ee5\u4e0b\u547d\u4ee4\u8fdb\u884c\u6570\u636e\u5e93\u8fc1\u79fb\uff1a<br \/>\npython manage.py migrate<\/p>\n<p>\u5c1d\u8bd5\u521b\u5efa\u4e00\u4e2a\u8d85\u7ea7\u7528\u6237<br \/>\n\u8fd0\u884cpython manage.py createsuperuser\u547d\u4ee4<\/p>\n<p>\u5230\u76ee\u524d\u4e3a\u6b62\u5f88\u5bb9\u6613\u3002<br \/>\n\u5982\u679c\u60f3\u8981\u4ece\u73b0\u6709\u8868\u4e2d\u62c9\u53d6\u6570\u636e\uff0c\u53ea\u9700\u7b80\u5355\u5730\u6267\u884cSQL\u67e5\u8be2\u662f\u4e0d\u591f\u7684\uff0c\u9700\u8981\u521b\u5efa\u4e00\u4e2a\u7c7b\u3002<br \/>\n\u53ef\u4ee5\u53c2\u8003\u8fd9\u7bc7\u6587\u7ae0\u6216\u5b98\u65b9\u6587\u6863\uff0c\u6267\u884cpython manage.py inspectdb\u547d\u4ee4\uff0c\u4ee5\u521b\u5efa\u4e4b\u524d\u5728Node.js\u4e2d\u6d4b\u8bd5\u8fc7\u7684\u8868\u7684\u7c7b\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"k\">class<\/span> <span class=\"nc\">Test<\/span><span class=\"p\">(<\/span><span class=\"n\">models<\/span><span class=\"p\">.<\/span><span class=\"n\">Model<\/span><span class=\"p\">):<\/span>\r\n    <span class=\"nb\">id<\/span> <span class=\"o\">=<\/span> <span class=\"n\">models<\/span><span class=\"p\">.<\/span><span class=\"n\">IntegerField<\/span><span class=\"p\">(<\/span><span class=\"n\">blank<\/span><span class=\"o\">=<\/span><span class=\"bp\">True<\/span><span class=\"p\">,<\/span> <span class=\"n\">null<\/span><span class=\"o\">=<\/span><span class=\"bp\">True<\/span><span class=\"p\">)<\/span>\r\n    <span class=\"n\">name<\/span> <span class=\"o\">=<\/span> <span class=\"n\">models<\/span><span class=\"p\">.<\/span><span class=\"n\">CharField<\/span><span class=\"p\">(<\/span><span class=\"n\">max_length<\/span><span class=\"o\">=<\/span><span class=\"mi\">50<\/span><span class=\"p\">,<\/span> <span class=\"n\">blank<\/span><span class=\"o\">=<\/span><span class=\"bp\">True<\/span><span class=\"p\">,<\/span> <span class=\"n\">null<\/span><span class=\"o\">=<\/span><span class=\"bp\">True<\/span><span class=\"p\">)<\/span>\r\n\r\n    <span class=\"k\">class<\/span> <span class=\"nc\">Meta<\/span><span class=\"p\">:<\/span>\r\n        <span class=\"n\">managed<\/span> <span class=\"o\">=<\/span> <span class=\"bp\">False<\/span>\r\n        <span class=\"n\">db_table<\/span> <span class=\"o\">=<\/span> <span class=\"s\">'test'<\/span>\r\n\r\n\r\n<span class=\"k\">class<\/span> <span class=\"nc\">Usr<\/span><span class=\"p\">(<\/span><span class=\"n\">models<\/span><span class=\"p\">.<\/span><span class=\"n\">Model<\/span><span class=\"p\">):<\/span>\r\n    <span class=\"n\">usr<\/span> <span class=\"o\">=<\/span> <span class=\"n\">models<\/span><span class=\"p\">.<\/span><span class=\"n\">CharField<\/span><span class=\"p\">(<\/span><span class=\"n\">max_length<\/span><span class=\"o\">=<\/span><span class=\"mi\">100<\/span><span class=\"p\">,<\/span> <span class=\"n\">blank<\/span><span class=\"o\">=<\/span><span class=\"bp\">True<\/span><span class=\"p\">,<\/span> <span class=\"n\">null<\/span><span class=\"o\">=<\/span><span class=\"bp\">True<\/span><span class=\"p\">)<\/span>\r\n    <span class=\"n\">pass_field<\/span> <span class=\"o\">=<\/span> <span class=\"n\">models<\/span><span class=\"p\">.<\/span><span class=\"n\">CharField<\/span><span class=\"p\">(<\/span><span class=\"n\">db_column<\/span><span class=\"o\">=<\/span><span class=\"s\">'pass'<\/span><span class=\"p\">,<\/span> <span class=\"n\">max_length<\/span><span class=\"o\">=<\/span><span class=\"mi\">100<\/span><span class=\"p\">,<\/span> <span class=\"n\">blank<\/span><span class=\"o\">=<\/span><span class=\"bp\">True<\/span><span class=\"p\">,<\/span> <span class=\"n\">null<\/span><span class=\"o\">=<\/span><span class=\"bp\">True<\/span><span class=\"p\">)<\/span>  <span class=\"c1\"># Field renamed because it was a Python reserved word.\r\n<\/span>\r\n    <span class=\"k\">class<\/span> <span class=\"nc\">Meta<\/span><span class=\"p\">:<\/span>\r\n        <span class=\"n\">managed<\/span> <span class=\"o\">=<\/span> <span class=\"bp\">False<\/span>\r\n        <span class=\"n\">db_table<\/span> <span class=\"o\">=<\/span> <span class=\"s\">'usr'<\/span>\r\n<\/code><\/pre>\n<p>\u5728\u8fd9\u91cc\uff0c\u4f5c\u4e3aDjango\u7684\u9650\u5236\uff0cid\u5217\u4f3c\u4e4e\u53d7\u5230\u4e3b\u952e\u7684\u9650\u5236\u3002<br \/>\n\u867d\u7136\u6ca1\u6709\u5728\u6570\u636e\u5e93\u7aef\u8fdb\u884c\u8bbe\u7f6e\uff0c\u4f46\u6682\u65f6\u5c06\u4e0a\u8ff0\u9009\u9879\u66f4\u6539\u4e3anull=False\uff0cprimary_key=True\u3002<br \/>\n\u5728view.py\u4e2d\u5199\u5165\u67e5\u8be2\u8bed\u53e5\uff0c\u5e76\u8fdb\u884c\u5f3a\u5236\u8f93\u51fa\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"k\">def<\/span> <span class=\"nf\">index<\/span><span class=\"p\">(<\/span><span class=\"n\">request<\/span><span class=\"p\">):<\/span>\r\n  <span class=\"k\">if<\/span> <span class=\"s\">\"id\"<\/span> <span class=\"ow\">in<\/span> <span class=\"n\">request<\/span><span class=\"p\">.<\/span><span class=\"n\">GET<\/span><span class=\"p\">:<\/span>\r\n    <span class=\"n\">sql<\/span> <span class=\"o\">=<\/span> <span class=\"s\">\"SELECT id,name FROM test WHERE id = %(id)s\"<\/span>\r\n    <span class=\"n\">params<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span><span class=\"s\">\"id\"<\/span><span class=\"p\">:<\/span> <span class=\"n\">request<\/span><span class=\"p\">.<\/span><span class=\"n\">GET<\/span><span class=\"p\">.<\/span><span class=\"n\">get<\/span><span class=\"p\">(<\/span><span class=\"s\">\"id\"<\/span><span class=\"p\">)}<\/span>\r\n    <span class=\"n\">names<\/span> <span class=\"o\">=<\/span> <span class=\"n\">Test<\/span><span class=\"p\">.<\/span><span class=\"n\">objects<\/span><span class=\"p\">.<\/span><span class=\"n\">raw<\/span><span class=\"p\">(<\/span><span class=\"n\">sql<\/span><span class=\"p\">,<\/span> <span class=\"n\">params<\/span><span class=\"p\">)<\/span>\r\n\r\n  <span class=\"n\">v_params<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span>\r\n    <span class=\"s\">'message'<\/span><span class=\"p\">:<\/span> <span class=\"nb\">list<\/span><span class=\"p\">(<\/span><span class=\"n\">names<\/span><span class=\"p\">)[<\/span><span class=\"mi\">0<\/span><span class=\"p\">].<\/span><span class=\"n\">name<\/span> <span class=\"k\">if<\/span> <span class=\"nb\">len<\/span><span class=\"p\">(<\/span><span class=\"nb\">list<\/span><span class=\"p\">(<\/span><span class=\"n\">names<\/span><span class=\"p\">))<\/span> <span class=\"o\">==<\/span> <span class=\"mi\">1<\/span> <span class=\"k\">else<\/span> <span class=\"s\">'NG'<\/span>\r\n  <span class=\"p\">}<\/span>\r\n  <span class=\"k\">return<\/span> <span class=\"n\">render<\/span><span class=\"p\">(<\/span><span class=\"n\">request<\/span><span class=\"p\">,<\/span> <span class=\"s\">'myapp\/index.html'<\/span><span class=\"p\">,<\/span> <span class=\"n\">v_params<\/span><span class=\"p\">)<\/span>\r\n<\/code><\/pre>\n<p>\u636e\u8bf4\uff0c\u770b\u8fd9\u4e2a\u5730\u65b9\uff0c\u5373\u4f7f\u4e0d\u5b9a\u4e49\u6a21\u578b\u4e5f\u80fd\u6267\u884cSQL\u67e5\u8be2\u3002<\/p>\n<p>\u867d\u7136\u6211\u4e0d\u592a\u719f\u6089Python\uff0c\u4f46\u5e76\u4e0d\u662f\u7279\u522b\u559c\u6b22\u8fd9\u79cd\u611f\u89c9\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u53ea\u4f7f\u7528Windows + Python3.9\u6765\u5b8c\u6210\u3002Django\u7248\u672c\u4e3a3.2.8\u3002 \u6b64\u6b21\u4e0d\u662f\u8003\u8651\u4f7f\u7528REST\uff0c [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-49915","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u5907\u5fd8\u5f55\uff1a\u4f7f\u7528Python + Django\uff0c\u5728Postgres\u4e0a\u521b\u5efa\u7b80\u5355\u7684\u754c\u9762 - Blog - Silicon Cloud<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/zh\/blog\/\u5907\u5fd8\u5f55\uff1a\u4f7f\u7528python-django\uff0c\u5728postgres\u4e0a\u521b\u5efa\u7b80\u5355\u7684\u754c\u9762\u3002\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u5907\u5fd8\u5f55\uff1a\u4f7f\u7528Python + Django\uff0c\u5728Postgres\u4e0a\u521b\u5efa\u7b80\u5355\u7684\u754c\u9762\" \/>\n<meta property=\"og:description\" content=\"\u53ea\u4f7f\u7528Windows + Python3.9\u6765\u5b8c\u6210\u3002Django\u7248\u672c\u4e3a3.2.8\u3002 \u6b64\u6b21\u4e0d\u662f\u8003\u8651\u4f7f\u7528REST\uff0c [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/\u5907\u5fd8\u5f55\uff1a\u4f7f\u7528python-django\uff0c\u5728postgres\u4e0a\u521b\u5efa\u7b80\u5355\u7684\u754c\u9762\u3002\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2023-12-10T12:37:38+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-05-04T09:14:43+00:00\" \/>\n<meta name=\"author\" content=\"\u97f5, \u79d1\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u97f5, \u79d1\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%a4%87%e5%bf%98%e5%bd%95%ef%bc%9a%e4%bd%bf%e7%94%a8python-django%ef%bc%8c%e5%9c%a8postgres%e4%b8%8a%e5%88%9b%e5%bb%ba%e7%ae%80%e5%8d%95%e7%9a%84%e7%95%8c%e9%9d%a2%e3%80%82\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%a4%87%e5%bf%98%e5%bd%95%ef%bc%9a%e4%bd%bf%e7%94%a8python-django%ef%bc%8c%e5%9c%a8postgres%e4%b8%8a%e5%88%9b%e5%bb%ba%e7%ae%80%e5%8d%95%e7%9a%84%e7%95%8c%e9%9d%a2%e3%80%82\/\",\"name\":\"\u5907\u5fd8\u5f55\uff1a\u4f7f\u7528Python + Django\uff0c\u5728Postgres\u4e0a\u521b\u5efa\u7b80\u5355\u7684\u754c\u9762 - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2023-12-10T12:37:38+00:00\",\"dateModified\":\"2024-05-04T09:14:43+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/6530331a63adef3b3443a1fab53a0e6e\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%a4%87%e5%bf%98%e5%bd%95%ef%bc%9a%e4%bd%bf%e7%94%a8python-django%ef%bc%8c%e5%9c%a8postgres%e4%b8%8a%e5%88%9b%e5%bb%ba%e7%ae%80%e5%8d%95%e7%9a%84%e7%95%8c%e9%9d%a2%e3%80%82\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%a4%87%e5%bf%98%e5%bd%95%ef%bc%9a%e4%bd%bf%e7%94%a8python-django%ef%bc%8c%e5%9c%a8postgres%e4%b8%8a%e5%88%9b%e5%bb%ba%e7%ae%80%e5%8d%95%e7%9a%84%e7%95%8c%e9%9d%a2%e3%80%82\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%a4%87%e5%bf%98%e5%bd%95%ef%bc%9a%e4%bd%bf%e7%94%a8python-django%ef%bc%8c%e5%9c%a8postgres%e4%b8%8a%e5%88%9b%e5%bb%ba%e7%ae%80%e5%8d%95%e7%9a%84%e7%95%8c%e9%9d%a2%e3%80%82\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/zh\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u5907\u5fd8\u5f55\uff1a\u4f7f\u7528Python + Django\uff0c\u5728Postgres\u4e0a\u521b\u5efa\u7b80\u5355\u7684\u754c\u9762\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/\",\"name\":\"Blog - Silicon Cloud\",\"description\":\"\",\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/6530331a63adef3b3443a1fab53a0e6e\",\"name\":\"\u97f5, \u79d1\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/429ccb39b3fff5188bc17986222cfb0936cbadb8cc933cff04ab5ca01bd30a08?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/429ccb39b3fff5188bc17986222cfb0936cbadb8cc933cff04ab5ca01bd30a08?s=96&d=mm&r=g\",\"caption\":\"\u97f5, \u79d1\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/yunke\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%a4%87%e5%bf%98%e5%bd%95%ef%bc%9a%e4%bd%bf%e7%94%a8python-django%ef%bc%8c%e5%9c%a8postgres%e4%b8%8a%e5%88%9b%e5%bb%ba%e7%ae%80%e5%8d%95%e7%9a%84%e7%95%8c%e9%9d%a2%e3%80%82\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\u5907\u5fd8\u5f55\uff1a\u4f7f\u7528Python + Django\uff0c\u5728Postgres\u4e0a\u521b\u5efa\u7b80\u5355\u7684\u754c\u9762 - Blog - Silicon Cloud","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/zh\/blog\/\u5907\u5fd8\u5f55\uff1a\u4f7f\u7528python-django\uff0c\u5728postgres\u4e0a\u521b\u5efa\u7b80\u5355\u7684\u754c\u9762\u3002\/","og_locale":"zh_CN","og_type":"article","og_title":"\u5907\u5fd8\u5f55\uff1a\u4f7f\u7528Python + Django\uff0c\u5728Postgres\u4e0a\u521b\u5efa\u7b80\u5355\u7684\u754c\u9762","og_description":"\u53ea\u4f7f\u7528Windows + Python3.9\u6765\u5b8c\u6210\u3002Django\u7248\u672c\u4e3a3.2.8\u3002 \u6b64\u6b21\u4e0d\u662f\u8003\u8651\u4f7f\u7528REST\uff0c [&hellip;]","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/\u5907\u5fd8\u5f55\uff1a\u4f7f\u7528python-django\uff0c\u5728postgres\u4e0a\u521b\u5efa\u7b80\u5355\u7684\u754c\u9762\u3002\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2023-12-10T12:37:38+00:00","article_modified_time":"2024-05-04T09:14:43+00:00","author":"\u97f5, \u79d1","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u97f5, \u79d1","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"2 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%a4%87%e5%bf%98%e5%bd%95%ef%bc%9a%e4%bd%bf%e7%94%a8python-django%ef%bc%8c%e5%9c%a8postgres%e4%b8%8a%e5%88%9b%e5%bb%ba%e7%ae%80%e5%8d%95%e7%9a%84%e7%95%8c%e9%9d%a2%e3%80%82\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%a4%87%e5%bf%98%e5%bd%95%ef%bc%9a%e4%bd%bf%e7%94%a8python-django%ef%bc%8c%e5%9c%a8postgres%e4%b8%8a%e5%88%9b%e5%bb%ba%e7%ae%80%e5%8d%95%e7%9a%84%e7%95%8c%e9%9d%a2%e3%80%82\/","name":"\u5907\u5fd8\u5f55\uff1a\u4f7f\u7528Python + Django\uff0c\u5728Postgres\u4e0a\u521b\u5efa\u7b80\u5355\u7684\u754c\u9762 - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2023-12-10T12:37:38+00:00","dateModified":"2024-05-04T09:14:43+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/6530331a63adef3b3443a1fab53a0e6e"},"breadcrumb":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%a4%87%e5%bf%98%e5%bd%95%ef%bc%9a%e4%bd%bf%e7%94%a8python-django%ef%bc%8c%e5%9c%a8postgres%e4%b8%8a%e5%88%9b%e5%bb%ba%e7%ae%80%e5%8d%95%e7%9a%84%e7%95%8c%e9%9d%a2%e3%80%82\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/%e5%a4%87%e5%bf%98%e5%bd%95%ef%bc%9a%e4%bd%bf%e7%94%a8python-django%ef%bc%8c%e5%9c%a8postgres%e4%b8%8a%e5%88%9b%e5%bb%ba%e7%ae%80%e5%8d%95%e7%9a%84%e7%95%8c%e9%9d%a2%e3%80%82\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%a4%87%e5%bf%98%e5%bd%95%ef%bc%9a%e4%bd%bf%e7%94%a8python-django%ef%bc%8c%e5%9c%a8postgres%e4%b8%8a%e5%88%9b%e5%bb%ba%e7%ae%80%e5%8d%95%e7%9a%84%e7%95%8c%e9%9d%a2%e3%80%82\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/zh\/blog\/"},{"@type":"ListItem","position":2,"name":"\u5907\u5fd8\u5f55\uff1a\u4f7f\u7528Python + Django\uff0c\u5728Postgres\u4e0a\u521b\u5efa\u7b80\u5355\u7684\u754c\u9762"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website","url":"https:\/\/www.silicloud.com\/zh\/blog\/","name":"Blog - Silicon Cloud","description":"","inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/6530331a63adef3b3443a1fab53a0e6e","name":"\u97f5, \u79d1","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/429ccb39b3fff5188bc17986222cfb0936cbadb8cc933cff04ab5ca01bd30a08?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/429ccb39b3fff5188bc17986222cfb0936cbadb8cc933cff04ab5ca01bd30a08?s=96&d=mm&r=g","caption":"\u97f5, \u79d1"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/yunke\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%a4%87%e5%bf%98%e5%bd%95%ef%bc%9a%e4%bd%bf%e7%94%a8python-django%ef%bc%8c%e5%9c%a8postgres%e4%b8%8a%e5%88%9b%e5%bb%ba%e7%ae%80%e5%8d%95%e7%9a%84%e7%95%8c%e9%9d%a2%e3%80%82\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/49915","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=49915"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/49915\/revisions"}],"predecessor-version":[{"id":99629,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/49915\/revisions\/99629"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=49915"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=49915"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=49915"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}