{"id":49579,"date":"2023-07-29T03:36:41","date_gmt":"2023-06-22T17:42:19","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/django-%e6%95%99%e7%a8%8b%ef%bc%9a%e6%ad%a6%e5%a3%ab%e6%97%a5%e6%9c%ac%e9%80%89%e6%89%8b%e5%90%8d%e5%8d%95\/"},"modified":"2024-04-30T15:50:38","modified_gmt":"2024-04-30T07:50:38","slug":"django-%e6%95%99%e7%a8%8b%ef%bc%9a%e6%ad%a6%e5%a3%ab%e6%97%a5%e6%9c%ac%e9%80%89%e6%89%8b%e5%90%8d%e5%8d%95","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/django-%e6%95%99%e7%a8%8b%ef%bc%9a%e6%ad%a6%e5%a3%ab%e6%97%a5%e6%9c%ac%e9%80%89%e6%89%8b%e5%90%8d%e5%8d%95\/","title":{"rendered":"Django \u6559\u7a0b\uff1a\u6b66\u58eb\u65e5\u672c\u9009\u624b\u540d\u5355"},"content":{"rendered":"<p>\u8fd9\u662f\u5730\u533a\u56fe\u4e66\u9986\u7f51\u7ad9\u7684 Django \u6559\u7a0b\u7b2c\u4e00\u90e8\u5206\u7684\u5e94\u7528\u7bc7\u3002<\/p>\n<p>\u8ba9\u6211\u4eec\u663e\u793a\u4e00\u4e0b\u65e5\u672c\u8db3\u7403\u4ee3\u8868\u961f\u7684\u7403\u5458\u540d\u5355\u3002<br \/>\n\u6211\u4eec\u5c06\u663e\u793a\u5982\u4e0b\u753b\u9762\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d8c36913a08637a6d002a\/2-0.png\" alt=\"member01.png\" \/><\/div>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d8c36913a08637a6d002a\/3-0.png\" alt=\"member02.png\" \/><\/div>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d8c36913a08637a6d002a\/4-0.png\" alt=\"member03.png\" \/><\/div>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d8c36913a08637a6d002a\/5-0.png\" alt=\"member04.png\" \/><\/div>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d8c36913a08637a6d002a\/6-0.png\" alt=\"member05.png\" \/><\/div>\n<p>1) \u521b\u5efa\u9879\u76ee\u548c\u5e94\u7528<\/p>\n<pre class=\"post-pre\"><code>django-admin startproject member_shozoku\r\n<span class=\"nb\">cd <\/span>member_shozoku\r\npython manage.py startapp namelist\r\n<\/code><\/pre>\n<p>2\uff09\u5e94\u7528\u7a0b\u5e8f\u7684\u6ce8\u518c<\/p>\n<pre class=\"post-pre\"><code>\r\n<span class=\"kn\">import<\/span> <span class=\"nn\">os<\/span>\r\n\r\n<span class=\"n\">BASE_DIR<\/span> <span class=\"o\">=<\/span> <span class=\"n\">os<\/span><span class=\"p\">.<\/span><span class=\"n\">path<\/span><span class=\"p\">.<\/span><span class=\"n\">dirname<\/span><span class=\"p\">(<\/span><span class=\"n\">os<\/span><span class=\"p\">.<\/span><span class=\"n\">path<\/span><span class=\"p\">.<\/span><span class=\"n\">dirname<\/span><span class=\"p\">(<\/span><span class=\"n\">os<\/span><span class=\"p\">.<\/span><span class=\"n\">path<\/span><span class=\"p\">.<\/span><span class=\"n\">abspath<\/span><span class=\"p\">(<\/span><span class=\"n\">__file__<\/span><span class=\"p\">)))<\/span>\r\n\r\n\r\n<span class=\"n\">SECRET_KEY<\/span> <span class=\"o\">=<\/span> <span class=\"s\">'p=df)0_ow)(j@h+)g5s!ceqnht$qtcr2+9$t1k*#5w5fgz8kn1'<\/span>\r\n\r\n<span class=\"n\">DEBUG<\/span> <span class=\"o\">=<\/span> <span class=\"bp\">True<\/span>\r\n\r\n<span class=\"n\">ALLOWED_HOSTS<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[]<\/span>\r\n\r\n<span class=\"n\">INSTALLED_APPS<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[<\/span>\r\n    <span class=\"s\">'django.contrib.admin'<\/span><span class=\"p\">,<\/span>\r\n    <span class=\"s\">'django.contrib.auth'<\/span><span class=\"p\">,<\/span>\r\n    <span class=\"s\">'django.contrib.contenttypes'<\/span><span class=\"p\">,<\/span>\r\n    <span class=\"s\">'django.contrib.sessions'<\/span><span class=\"p\">,<\/span>\r\n    <span class=\"s\">'django.contrib.messages'<\/span><span class=\"p\">,<\/span>\r\n    <span class=\"s\">'django.contrib.staticfiles'<\/span><span class=\"p\">,<\/span>\r\n    <span class=\"s\">'namelist.apps.NamelistConfig'<\/span><span class=\"p\">,<\/span>\r\n<span class=\"p\">]<\/span>\r\n\r\n<span class=\"n\">MIDDLEWARE<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[<\/span>\r\n    <span class=\"s\">'django.middleware.security.SecurityMiddleware'<\/span><span class=\"p\">,<\/span>\r\n    <span class=\"s\">'django.contrib.sessions.middleware.SessionMiddleware'<\/span><span class=\"p\">,<\/span>\r\n    <span class=\"s\">'django.middleware.common.CommonMiddleware'<\/span><span class=\"p\">,<\/span>\r\n    <span class=\"s\">'django.middleware.csrf.CsrfViewMiddleware'<\/span><span class=\"p\">,<\/span>\r\n    <span class=\"s\">'django.contrib.auth.middleware.AuthenticationMiddleware'<\/span><span class=\"p\">,<\/span>\r\n    <span class=\"s\">'django.contrib.messages.middleware.MessageMiddleware'<\/span><span class=\"p\">,<\/span>\r\n    <span class=\"s\">'django.middleware.clickjacking.XFrameOptionsMiddleware'<\/span><span class=\"p\">,<\/span>\r\n<span class=\"p\">]<\/span>\r\n\r\n<span class=\"n\">ROOT_URLCONF<\/span> <span class=\"o\">=<\/span> <span class=\"s\">'member_syozoku.urls'<\/span>\r\n\r\n<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>\r\n            <span class=\"n\">os<\/span><span class=\"p\">.<\/span><span class=\"n\">path<\/span><span class=\"p\">.<\/span><span class=\"n\">join<\/span><span class=\"p\">(<\/span><span class=\"n\">BASE_DIR<\/span><span class=\"p\">,<\/span><span class=\"s\">'templates'<\/span><span class=\"p\">),<\/span>\r\n<span class=\"p\">],<\/span>\r\n        <span class=\"s\">'APP_DIRS'<\/span><span class=\"p\">:<\/span> <span class=\"bp\">True<\/span><span class=\"p\">,<\/span>\r\n        <span class=\"s\">'OPTIONS'<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n            <span class=\"s\">'context_processors'<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span>\r\n                <span class=\"s\">'django.template.context_processors.debug'<\/span><span class=\"p\">,<\/span>\r\n                <span class=\"s\">'django.template.context_processors.request'<\/span><span class=\"p\">,<\/span>\r\n                <span class=\"s\">'django.contrib.auth.context_processors.auth'<\/span><span class=\"p\">,<\/span>\r\n                <span class=\"s\">'django.contrib.messages.context_processors.messages'<\/span><span class=\"p\">,<\/span>\r\n            <span class=\"p\">],<\/span>\r\n        <span class=\"p\">},<\/span>\r\n    <span class=\"p\">},<\/span>\r\n<span class=\"p\">]<\/span>\r\n\r\n<span class=\"n\">WSGI_APPLICATION<\/span> <span class=\"o\">=<\/span> <span class=\"s\">'member_syozoku.wsgi.application'<\/span>\r\n\r\n<span class=\"n\">DATABASES<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span>\r\n    <span class=\"s\">'default'<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n        <span class=\"s\">'ENGINE'<\/span><span class=\"p\">:<\/span> <span class=\"s\">'django.db.backends.sqlite3'<\/span><span class=\"p\">,<\/span>\r\n        <span class=\"s\">'NAME'<\/span><span class=\"p\">:<\/span> <span class=\"n\">os<\/span><span class=\"p\">.<\/span><span class=\"n\">path<\/span><span class=\"p\">.<\/span><span class=\"n\">join<\/span><span class=\"p\">(<\/span><span class=\"n\">BASE_DIR<\/span><span class=\"p\">,<\/span> <span class=\"s\">'db.sqlite3'<\/span><span class=\"p\">),<\/span>\r\n    <span class=\"p\">}<\/span>\r\n<span class=\"p\">}<\/span>\r\n\r\n<span class=\"n\">AUTH_PASSWORD_VALIDATORS<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[<\/span>\r\n    <span class=\"p\">{<\/span>\r\n        <span class=\"s\">'NAME'<\/span><span class=\"p\">:<\/span> <span class=\"s\">'django.contrib.auth.password_validation.UserAttributeSimilarityValidator'<\/span><span class=\"p\">,<\/span>\r\n    <span class=\"p\">},<\/span>\r\n    <span class=\"p\">{<\/span>\r\n        <span class=\"s\">'NAME'<\/span><span class=\"p\">:<\/span> <span class=\"s\">'django.contrib.auth.password_validation.MinimumLengthValidator'<\/span><span class=\"p\">,<\/span>\r\n    <span class=\"p\">},<\/span>\r\n    <span class=\"p\">{<\/span>\r\n        <span class=\"s\">'NAME'<\/span><span class=\"p\">:<\/span> <span class=\"s\">'django.contrib.auth.password_validation.CommonPasswordValidator'<\/span><span class=\"p\">,<\/span>\r\n    <span class=\"p\">},<\/span>\r\n    <span class=\"p\">{<\/span>\r\n        <span class=\"s\">'NAME'<\/span><span class=\"p\">:<\/span> <span class=\"s\">'django.contrib.auth.password_validation.NumericPasswordValidator'<\/span><span class=\"p\">,<\/span>\r\n    <span class=\"p\">},<\/span>\r\n<span class=\"p\">]<\/span>\r\n\r\n<span class=\"n\">LANGUAGE_CODE<\/span> <span class=\"o\">=<\/span> <span class=\"s\">'en-us'<\/span>\r\n\r\n<span class=\"n\">TIME_ZONE<\/span> <span class=\"o\">=<\/span> <span class=\"s\">'UTC'<\/span>\r\n\r\n<span class=\"n\">USE_I18N<\/span> <span class=\"o\">=<\/span> <span class=\"bp\">True<\/span>\r\n\r\n<span class=\"n\">USE_L10N<\/span> <span class=\"o\">=<\/span> <span class=\"bp\">True<\/span>\r\n\r\n<span class=\"n\">USE_TZ<\/span> <span class=\"o\">=<\/span> <span class=\"bp\">True<\/span>\r\n\r\n<span class=\"n\">STATIC_URL<\/span> <span class=\"o\">=<\/span> <span class=\"s\">'\/static\/'<\/span>\r\n<\/code><\/pre>\n<p>3) \u8bbe\u7f6e URL<\/p>\n<pre class=\"post-pre\"><code>\r\n<span class=\"kn\">from<\/span> <span class=\"nn\">django.contrib<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">admin<\/span>\r\n<span class=\"kn\">from<\/span> <span class=\"nn\">django.urls<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">path<\/span>\r\n\r\n<span class=\"n\">urlpatterns<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[<\/span>\r\n    <span class=\"n\">path<\/span><span class=\"p\">(<\/span><span class=\"s\">'admin\/'<\/span><span class=\"p\">,<\/span> <span class=\"n\">admin<\/span><span class=\"p\">.<\/span><span class=\"n\">site<\/span><span class=\"p\">.<\/span><span class=\"n\">urls<\/span><span class=\"p\">),<\/span>\r\n<span class=\"p\">]<\/span>\r\n\r\n<span class=\"kn\">from<\/span> <span class=\"nn\">django.urls<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">include<\/span>\r\n<span class=\"kn\">from<\/span> <span class=\"nn\">django.urls<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">path<\/span>\r\n\r\n<span class=\"n\">urlpatterns<\/span> <span class=\"o\">+=<\/span> <span class=\"p\">[<\/span>\r\n    <span class=\"n\">path<\/span><span class=\"p\">(<\/span><span class=\"s\">'namelist\/'<\/span><span class=\"p\">,<\/span> <span class=\"n\">include<\/span><span class=\"p\">(<\/span><span class=\"s\">'namelist.urls'<\/span><span class=\"p\">)),<\/span>\r\n<span class=\"p\">]<\/span>\r\n\r\n<span class=\"kn\">from<\/span> <span class=\"nn\">django.views.generic<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">RedirectView<\/span>\r\n<span class=\"n\">urlpatterns<\/span> <span class=\"o\">+=<\/span> <span class=\"p\">[<\/span>\r\n    <span class=\"n\">path<\/span><span class=\"p\">(<\/span><span class=\"s\">''<\/span><span class=\"p\">,<\/span> <span class=\"n\">RedirectView<\/span><span class=\"p\">.<\/span><span class=\"n\">as_view<\/span><span class=\"p\">(<\/span><span class=\"n\">url<\/span><span class=\"o\">=<\/span><span class=\"s\">'\/namelist\/'<\/span><span class=\"p\">,<\/span> <span class=\"n\">permanent<\/span><span class=\"o\">=<\/span><span class=\"bp\">True<\/span><span class=\"p\">)),<\/span>\r\n<span class=\"p\">]<\/span>\r\n\r\n<span class=\"c1\"># Use static() to add url mapping to serve static files during development (only)\r\n<\/span><span class=\"kn\">from<\/span> <span class=\"nn\">django.conf<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">settings<\/span>\r\n<span class=\"kn\">from<\/span> <span class=\"nn\">django.conf.urls.static<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">static<\/span>\r\n\r\n<span class=\"n\">urlpatterns<\/span> <span class=\"o\">+=<\/span> <span class=\"n\">static<\/span><span class=\"p\">(<\/span><span class=\"n\">settings<\/span><span class=\"p\">.<\/span><span class=\"n\">STATIC_URL<\/span><span class=\"p\">,<\/span> <span class=\"n\">document_root<\/span><span class=\"o\">=<\/span><span class=\"n\">settings<\/span><span class=\"p\">.<\/span><span class=\"n\">STATIC_ROOT<\/span><span class=\"p\">)<\/span>\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code><span class=\"kn\">from<\/span> <span class=\"nn\">django.urls<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">path<\/span>\r\n<span class=\"kn\">from<\/span> <span class=\"nn\">.<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">views<\/span>\r\n\r\n<span class=\"n\">urlpatterns<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[<\/span>\r\n    <span class=\"n\">path<\/span><span class=\"p\">(<\/span><span class=\"s\">''<\/span><span class=\"p\">,<\/span> <span class=\"n\">views<\/span><span class=\"p\">.<\/span><span class=\"n\">index<\/span><span class=\"p\">,<\/span> <span class=\"n\">name<\/span><span class=\"o\">=<\/span><span class=\"s\">'index'<\/span><span class=\"p\">),<\/span>\r\n    <span class=\"n\">path<\/span><span class=\"p\">(<\/span><span class=\"s\">'members\/'<\/span><span class=\"p\">,<\/span> <span class=\"n\">views<\/span><span class=\"p\">.<\/span><span class=\"n\">MemberListView<\/span><span class=\"p\">.<\/span><span class=\"n\">as_view<\/span><span class=\"p\">(),<\/span> <span class=\"n\">name<\/span><span class=\"o\">=<\/span><span class=\"s\">'members'<\/span><span class=\"p\">),<\/span>\r\n    <span class=\"n\">path<\/span><span class=\"p\">(<\/span><span class=\"s\">'member\/&lt;int:pk&gt;'<\/span><span class=\"p\">,<\/span> <span class=\"n\">views<\/span><span class=\"p\">.<\/span><span class=\"n\">MemberDetailView<\/span><span class=\"p\">.<\/span><span class=\"n\">as_view<\/span><span class=\"p\">(),<\/span> <span class=\"n\">name<\/span><span class=\"o\">=<\/span><span class=\"s\">'member-detail'<\/span><span class=\"p\">),<\/span>\r\n    <span class=\"n\">path<\/span><span class=\"p\">(<\/span><span class=\"s\">'syozokus\/'<\/span><span class=\"p\">,<\/span> <span class=\"n\">views<\/span><span class=\"p\">.<\/span><span class=\"n\">SyozokuListView<\/span><span class=\"p\">.<\/span><span class=\"n\">as_view<\/span><span class=\"p\">(),<\/span> <span class=\"n\">name<\/span><span class=\"o\">=<\/span><span class=\"s\">'syozokus'<\/span><span class=\"p\">),<\/span>\r\n    <span class=\"n\">path<\/span><span class=\"p\">(<\/span><span class=\"s\">'syozoku\/&lt;int:pk&gt;'<\/span><span class=\"p\">,<\/span> <span class=\"n\">views<\/span><span class=\"p\">.<\/span><span class=\"n\">SyozokuDetailView<\/span><span class=\"p\">.<\/span><span class=\"n\">as_view<\/span><span class=\"p\">(),<\/span> <span class=\"n\">name<\/span><span class=\"o\">=<\/span><span class=\"s\">'syozoku-detail'<\/span><span class=\"p\">),<\/span>\r\n<span class=\"p\">]<\/span>\r\n\r\n<span class=\"c1\">#\r\n<\/span><span class=\"n\">urlpatterns<\/span> <span class=\"o\">+=<\/span> <span class=\"p\">[<\/span>  \r\n    <span class=\"n\">path<\/span><span class=\"p\">(<\/span><span class=\"s\">'member\/create\/'<\/span><span class=\"p\">,<\/span> <span class=\"n\">views<\/span><span class=\"p\">.<\/span><span class=\"n\">MemberCreate<\/span><span class=\"p\">.<\/span><span class=\"n\">as_view<\/span><span class=\"p\">(),<\/span> <span class=\"n\">name<\/span><span class=\"o\">=<\/span><span class=\"s\">'member_create'<\/span><span class=\"p\">),<\/span>\r\n    <span class=\"n\">path<\/span><span class=\"p\">(<\/span><span class=\"s\">'member\/&lt;int:pk&gt;\/update\/'<\/span><span class=\"p\">,<\/span> <span class=\"n\">views<\/span><span class=\"p\">.<\/span><span class=\"n\">MemberUpdate<\/span><span class=\"p\">.<\/span><span class=\"n\">as_view<\/span><span class=\"p\">(),<\/span> <span class=\"n\">name<\/span><span class=\"o\">=<\/span><span class=\"s\">'member_update'<\/span><span class=\"p\">),<\/span>\r\n    <span class=\"n\">path<\/span><span class=\"p\">(<\/span><span class=\"s\">'member\/&lt;int:pk&gt;\/delete\/'<\/span><span class=\"p\">,<\/span> <span class=\"n\">views<\/span><span class=\"p\">.<\/span><span class=\"n\">MemberDelete<\/span><span class=\"p\">.<\/span><span class=\"n\">as_view<\/span><span class=\"p\">(),<\/span> <span class=\"n\">name<\/span><span class=\"o\">=<\/span><span class=\"s\">'member_delete'<\/span><span class=\"p\">),<\/span>\r\n<span class=\"p\">]<\/span>\r\n<span class=\"c1\">#\r\n<\/span><\/code><\/pre>\n<p>\u521b\u5efa\u540d\u5355\/views.py\u6587\u4ef6<\/p>\n<pre class=\"post-pre\"><code><span class=\"kn\">from<\/span> <span class=\"nn\">django.shortcuts<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">render<\/span>\r\n\r\n<span class=\"c1\"># Create your views here.\r\n<\/span>\r\n<span class=\"kn\">from<\/span> <span class=\"nn\">namelist.models<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">Member<\/span><span class=\"p\">,<\/span> <span class=\"n\">Syozoku<\/span>\r\n\r\n<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=\"s\">\"\"\"View function for home page of site.\"\"\"<\/span>\r\n\r\n    <span class=\"c1\"># Generate counts of some of the main objects\r\n<\/span>    <span class=\"n\">num_members<\/span> <span class=\"o\">=<\/span> <span class=\"n\">Member<\/span><span class=\"p\">.<\/span><span class=\"n\">objects<\/span><span class=\"p\">.<\/span><span class=\"nb\">all<\/span><span class=\"p\">().<\/span><span class=\"n\">count<\/span><span class=\"p\">()<\/span>\r\n<span class=\"c1\">#    num_instances = MemberInstance.objects.all().count()\r\n<\/span>\r\n\r\n    <span class=\"c1\"># The 'all()' is implied by default.    \r\n<\/span>    <span class=\"n\">num_syozokus<\/span> <span class=\"o\">=<\/span> <span class=\"n\">Syozoku<\/span><span class=\"p\">.<\/span><span class=\"n\">objects<\/span><span class=\"p\">.<\/span><span class=\"n\">count<\/span><span class=\"p\">()<\/span>\r\n\r\n    <span class=\"n\">context<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span>\r\n        <span class=\"s\">'num_members'<\/span><span class=\"p\">:<\/span> <span class=\"n\">num_members<\/span><span class=\"p\">,<\/span>\r\n<span class=\"c1\">#        'num_instances': num_instances,\r\n<\/span>        <span class=\"s\">'num_syozokus'<\/span><span class=\"p\">:<\/span> <span class=\"n\">num_syozokus<\/span><span class=\"p\">,<\/span>\r\n    <span class=\"p\">}<\/span>\r\n\r\n    <span class=\"c1\"># Render the HTML template index.html with the data in the context variable\r\n<\/span>    <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\">'namelist\/index.html'<\/span><span class=\"p\">,<\/span> <span class=\"n\">context<\/span><span class=\"o\">=<\/span><span class=\"n\">context<\/span><span class=\"p\">)<\/span>\r\n\r\n<span class=\"kn\">from<\/span> <span class=\"nn\">django.views<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">generic<\/span>\r\n\r\n<span class=\"k\">class<\/span> <span class=\"nc\">MemberListView<\/span><span class=\"p\">(<\/span><span class=\"n\">generic<\/span><span class=\"p\">.<\/span><span class=\"n\">ListView<\/span><span class=\"p\">):<\/span>\r\n    <span class=\"n\">model<\/span> <span class=\"o\">=<\/span> <span class=\"n\">Member<\/span>\r\n\r\n<span class=\"k\">class<\/span> <span class=\"nc\">MemberDetailView<\/span><span class=\"p\">(<\/span><span class=\"n\">generic<\/span><span class=\"p\">.<\/span><span class=\"n\">DetailView<\/span><span class=\"p\">):<\/span>\r\n    <span class=\"n\">model<\/span> <span class=\"o\">=<\/span> <span class=\"n\">Member<\/span>\r\n\r\n<span class=\"k\">class<\/span> <span class=\"nc\">SyozokuListView<\/span><span class=\"p\">(<\/span><span class=\"n\">generic<\/span><span class=\"p\">.<\/span><span class=\"n\">ListView<\/span><span class=\"p\">):<\/span>\r\n    <span class=\"n\">model<\/span> <span class=\"o\">=<\/span> <span class=\"n\">Syozoku<\/span>\r\n\r\n<span class=\"k\">class<\/span> <span class=\"nc\">SyozokuDetailView<\/span><span class=\"p\">(<\/span><span class=\"n\">generic<\/span><span class=\"p\">.<\/span><span class=\"n\">DetailView<\/span><span class=\"p\">):<\/span>\r\n    <span class=\"n\">model<\/span> <span class=\"o\">=<\/span> <span class=\"n\">Syozoku<\/span>\r\n\r\n<span class=\"kn\">from<\/span> <span class=\"nn\">django.views.generic.edit<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">CreateView<\/span><span class=\"p\">,<\/span> <span class=\"n\">UpdateView<\/span><span class=\"p\">,<\/span> <span class=\"n\">DeleteView<\/span>\r\n<span class=\"kn\">from<\/span> <span class=\"nn\">django.urls<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">reverse_lazy<\/span>\r\n<span class=\"kn\">from<\/span> <span class=\"nn\">namelist.models<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">Member<\/span>\r\n\r\n<span class=\"k\">class<\/span> <span class=\"nc\">MemberCreate<\/span><span class=\"p\">(<\/span><span class=\"n\">CreateView<\/span><span class=\"p\">):<\/span>\r\n    <span class=\"n\">model<\/span> <span class=\"o\">=<\/span> <span class=\"n\">Member<\/span>\r\n    <span class=\"n\">fields<\/span> <span class=\"o\">=<\/span> <span class=\"s\">'__all__'<\/span>\r\n\r\n<span class=\"k\">class<\/span> <span class=\"nc\">MemberUpdate<\/span><span class=\"p\">(<\/span><span class=\"n\">UpdateView<\/span><span class=\"p\">):<\/span>\r\n    <span class=\"n\">model<\/span> <span class=\"o\">=<\/span> <span class=\"n\">Member<\/span>\r\n    <span class=\"n\">fields<\/span> <span class=\"o\">=<\/span> <span class=\"s\">'__all__'<\/span>\r\n\r\n<span class=\"k\">class<\/span> <span class=\"nc\">MemberDelete<\/span><span class=\"p\">(<\/span><span class=\"n\">DeleteView<\/span><span class=\"p\">):<\/span>\r\n    <span class=\"n\">model<\/span> <span class=\"o\">=<\/span> <span class=\"n\">Member<\/span>\r\n    <span class=\"n\">success_url<\/span> <span class=\"o\">=<\/span> <span class=\"n\">reverse_lazy<\/span><span class=\"p\">(<\/span><span class=\"s\">'members'<\/span><span class=\"p\">)<\/span>\r\n<\/code><\/pre>\n<p>5) \u521b\u5efa namelist\/models.py<\/p>\n<pre class=\"post-pre\"><code><span class=\"kn\">from<\/span> <span class=\"nn\">django.db<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">models<\/span>\r\n<span class=\"kn\">from<\/span> <span class=\"nn\">django.urls<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">reverse<\/span>\r\n\r\n<span class=\"k\">class<\/span> <span class=\"nc\">Member<\/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\">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\">30<\/span><span class=\"p\">)<\/span>\r\n    <span class=\"n\">year_of_birth<\/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\">null<\/span><span class=\"o\">=<\/span><span class=\"bp\">True<\/span><span class=\"p\">)<\/span>\r\n\r\n    <span class=\"n\">syozoku<\/span> <span class=\"o\">=<\/span> <span class=\"n\">models<\/span><span class=\"p\">.<\/span><span class=\"n\">ForeignKey<\/span><span class=\"p\">(<\/span><span class=\"s\">'Syozoku'<\/span><span class=\"p\">,<\/span> <span class=\"n\">on_delete<\/span><span class=\"o\">=<\/span><span class=\"n\">models<\/span><span class=\"p\">.<\/span><span class=\"n\">SET_NULL<\/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\">def<\/span> <span class=\"nf\">__str__<\/span><span class=\"p\">(<\/span><span class=\"bp\">self<\/span><span class=\"p\">):<\/span>\r\n        <span class=\"k\">return<\/span> <span class=\"bp\">self<\/span><span class=\"p\">.<\/span><span class=\"n\">name<\/span>\r\n\r\n    <span class=\"k\">def<\/span> <span class=\"nf\">get_absolute_url<\/span><span class=\"p\">(<\/span><span class=\"bp\">self<\/span><span class=\"p\">):<\/span>\r\n        <span class=\"k\">return<\/span> <span class=\"n\">reverse<\/span><span class=\"p\">(<\/span><span class=\"s\">'member-detail'<\/span><span class=\"p\">,<\/span> <span class=\"n\">args<\/span><span class=\"o\">=<\/span><span class=\"p\">[<\/span><span class=\"nb\">str<\/span><span class=\"p\">(<\/span><span class=\"bp\">self<\/span><span class=\"p\">.<\/span><span class=\"nb\">id<\/span><span class=\"p\">)])<\/span>\r\n\r\n<span class=\"k\">class<\/span> <span class=\"nc\">Syozoku<\/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\">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\">30<\/span><span class=\"p\">)<\/span>\r\n    <span class=\"n\">home<\/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\">30<\/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\">ordering<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[<\/span><span class=\"s\">'name'<\/span><span class=\"p\">]<\/span>\r\n\r\n    <span class=\"k\">def<\/span> <span class=\"nf\">get_absolute_url<\/span><span class=\"p\">(<\/span><span class=\"bp\">self<\/span><span class=\"p\">):<\/span>\r\n        <span class=\"k\">return<\/span> <span class=\"n\">reverse<\/span><span class=\"p\">(<\/span><span class=\"s\">'syozoku-detail'<\/span><span class=\"p\">,<\/span> <span class=\"n\">args<\/span><span class=\"o\">=<\/span><span class=\"p\">[<\/span><span class=\"nb\">str<\/span><span class=\"p\">(<\/span><span class=\"bp\">self<\/span><span class=\"p\">.<\/span><span class=\"nb\">id<\/span><span class=\"p\">)])<\/span>\r\n\r\n    <span class=\"k\">def<\/span> <span class=\"nf\">__str__<\/span><span class=\"p\">(<\/span><span class=\"bp\">self<\/span><span class=\"p\">):<\/span>\r\n        <span class=\"k\">return<\/span> <span class=\"sa\">f<\/span><span class=\"s\">'<\/span><span class=\"si\">{<\/span><span class=\"bp\">self<\/span><span class=\"p\">.<\/span><span class=\"n\">name<\/span><span class=\"si\">}<\/span><span class=\"s\">'<\/span>\r\n<\/code><\/pre>\n<p>6) \u79fb\u6c11<\/p>\n<pre class=\"post-pre\"><code>python manage.py makemigrations\r\npython manage.py migrate\r\n<\/code><\/pre>\n<p>7) \u5236\u4f5c\u6a21\u677f<\/p>\n<pre class=\"post-pre\"><code><span class=\"nb\">mkdir <\/span>namelist\/templates\r\n<span class=\"nb\">mkdir <\/span>namelist\/templates\/namelist\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code><span class=\"cp\">&lt;!DOCTYPE html&gt;<\/span>\r\n<span class=\"nt\">&lt;html<\/span> <span class=\"na\">lang=<\/span><span class=\"s\">\"ja\"<\/span><span class=\"nt\">&gt;<\/span>\r\n<span class=\"nt\">&lt;head&gt;<\/span>\r\n  {% block title %}<span class=\"nt\">&lt;title&gt;<\/span>\u30e1\u30f3\u30d0\u30fc\u3000\u6240\u5c5e<span class=\"nt\">&lt;\/title&gt;<\/span>{% endblock %}\r\n<span class=\"nt\">&lt;meta<\/span> <span class=\"na\">charset=<\/span><span class=\"s\">\"utf-8\"<\/span><span class=\"nt\">&gt;<\/span>\r\n<span class=\"nt\">&lt;meta<\/span> <span class=\"na\">name=<\/span><span class=\"s\">\"viewport\"<\/span> <span class=\"na\">content=<\/span><span class=\"s\">\"width=device-width, initial-scale=1\"<\/span><span class=\"nt\">&gt;<\/span>\r\n  {% load static %}\r\n<span class=\"nt\">&lt;\/head&gt;<\/span>\r\n<span class=\"nt\">&lt;body&gt;<\/span>\r\n{% block sidebar %}\r\n    <span class=\"nt\">&lt;ul<\/span> <span class=\"na\">class=<\/span><span class=\"s\">\"sidebar-nav\"<\/span><span class=\"nt\">&gt;<\/span>\r\n    <span class=\"nt\">&lt;li&gt;&lt;a<\/span> <span class=\"na\">href=<\/span><span class=\"s\">\"{% url 'index' %}\"<\/span><span class=\"nt\">&gt;<\/span>\u30db\u30fc\u30e0<span class=\"nt\">&lt;\/a&gt;&lt;\/li&gt;<\/span>\r\n    <span class=\"nt\">&lt;li&gt;&lt;a<\/span> <span class=\"na\">href=<\/span><span class=\"s\">\"{% url 'members' %}\"<\/span><span class=\"nt\">&gt;<\/span>\u5168\u30e1\u30f3\u30d0\u30fc<span class=\"nt\">&lt;\/a&gt;&lt;\/li&gt;<\/span>\r\n    <span class=\"nt\">&lt;li&gt;&lt;a<\/span> <span class=\"na\">href=<\/span><span class=\"s\">\"{% url 'syozokus' %}\"<\/span><span class=\"nt\">&gt;<\/span>\u5168\u6240\u5c5e<span class=\"nt\">&lt;\/a&gt;&lt;\/li&gt;<\/span>\r\n    <span class=\"nt\">&lt;\/ul&gt;<\/span>\r\n{% endblock %}\r\n{% block content %}\r\n{% endblock %}\r\n    2019\u5e743\u670823\u65e5<span class=\"nt\">&lt;p<\/span> <span class=\"nt\">\/&gt;<\/span>\r\n<span class=\"nt\">&lt;\/body&gt;<\/span>\r\n<span class=\"nt\">&lt;\/html&gt;<\/span>\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code>{% extends \"namelist\/base_generic.html\" %}\r\n\r\n{% block content %}\r\n  <span class=\"nt\">&lt;h1&gt;<\/span>\u30e1\u30f3\u30d0\u30fc\u3000\u6240\u5c5e<span class=\"nt\">&lt;\/h1&gt;<\/span>\r\n  <span class=\"nt\">&lt;ul&gt;<\/span>\r\n    <span class=\"nt\">&lt;li&gt;&lt;strong&gt;<\/span>\u30e1\u30f3\u30d0\u30fc:<span class=\"nt\">&lt;\/strong&gt;<\/span> {{ num_members }}<span class=\"nt\">&lt;\/li&gt;<\/span>\r\n    <span class=\"nt\">&lt;li&gt;&lt;strong&gt;<\/span>\u6240\u5c5e:<span class=\"nt\">&lt;\/strong&gt;<\/span> {{ num_syozokus }}<span class=\"nt\">&lt;\/li&gt;<\/span>\r\n  <span class=\"nt\">&lt;\/ul&gt;<\/span>\r\n{% endblock %}\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code>{% extends \"namelist\/base_generic.html\" %}\r\n\r\n{% block content %}\r\n  <span class=\"nt\">&lt;h1&gt;<\/span>\u30e1\u30f3\u30d0\u30fc\u3000\u30ea\u30b9\u30c8<span class=\"nt\">&lt;\/h1&gt;<\/span>\r\n  {% if member_list %}\r\n  <span class=\"nt\">&lt;ol&gt;<\/span>\r\n    {% for member in member_list %}\r\n      <span class=\"nt\">&lt;li&gt;<\/span>\r\n        <span class=\"nt\">&lt;a<\/span> <span class=\"na\">href=<\/span><span class=\"s\">\"{{ member.get_absolute_url }}\"<\/span><span class=\"nt\">&gt;<\/span>{{ member.name }}<span class=\"nt\">&lt;\/a&gt;<\/span>\r\n        (<span class=\"nt\">&lt;a<\/span> <span class=\"na\">href=<\/span><span class=\"s\">\"{% url 'syozoku-detail' member.syozoku.pk %}\"<\/span><span class=\"nt\">&gt;<\/span>{{ member.syozoku }}<span class=\"nt\">&lt;\/a&gt;<\/span>)\r\n      <span class=\"nt\">&lt;\/li&gt;<\/span>\r\n    {% endfor %}\r\n  <span class=\"nt\">&lt;\/ol&gt;<\/span>\r\n  {% else %}\r\n    <span class=\"nt\">&lt;p&gt;<\/span>There are no members registered.<span class=\"nt\">&lt;\/p&gt;<\/span>\r\n  {% endif %}\r\n\r\n<span class=\"nt\">&lt;a<\/span> <span class=\"na\">href=<\/span><span class=\"s\">\"\/namelist\/member\/create\/\"<\/span><span class=\"nt\">&gt;<\/span>\u65b0\u898f<span class=\"nt\">&lt;\/a&gt;&lt;p<\/span> <span class=\"nt\">\/&gt;<\/span>\r\n{% endblock %}\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code>{% extends \"namelist\/base_generic.html\" %}\r\n\r\n{% block content %}\r\n  <span class=\"nt\">&lt;h1&gt;<\/span>\u6240\u5c5e\u3000\u30ea\u30b9\u30c8<span class=\"nt\">&lt;\/h1&gt;<\/span>\r\n  {% if syozoku_list %}\r\n  <span class=\"nt\">&lt;ol&gt;<\/span>\r\n    {% for syozoku in syozoku_list %}\r\n      <span class=\"nt\">&lt;li&gt;<\/span>\r\n        <span class=\"nt\">&lt;a<\/span> <span class=\"na\">href=<\/span><span class=\"s\">\"{{ syozoku.get_absolute_url }}\"<\/span><span class=\"nt\">&gt;<\/span>{{ syozoku.name }}<span class=\"nt\">&lt;\/a&gt;<\/span>\r\n      <span class=\"nt\">&lt;\/li&gt;<\/span>\r\n    {% endfor %}\r\n  <span class=\"nt\">&lt;\/ol&gt;<\/span>\r\n  {% else %}\r\n    <span class=\"nt\">&lt;p&gt;<\/span>There are no syozokus registered.<span class=\"nt\">&lt;\/p&gt;<\/span>\r\n  {% endif %}       \r\n{% endblock %}\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code>{% extends \"namelist\/base_generic.html\" %}\r\n\r\n{% block content %}\r\n  <span class=\"nt\">&lt;h1&gt;<\/span>\u540d\u524d: {{ member.name }}<span class=\"nt\">&lt;\/h1&gt;<\/span>\r\n    \u751f\u5e74 {{member.year_of_birth}} <span class=\"nt\">&lt;p<\/span> <span class=\"nt\">\/&gt;<\/span>\r\n  <span class=\"nt\">&lt;p&gt;&lt;strong&gt;<\/span>\u6240\u5c5e:<span class=\"nt\">&lt;\/strong&gt;<\/span> <span class=\"nt\">&lt;a<\/span> <span class=\"na\">href=<\/span><span class=\"s\">\"{% url 'syozoku-detail' member.syozoku.pk %}\"<\/span><span class=\"nt\">&gt;<\/span>{{ member.syozoku }}<span class=\"nt\">&lt;\/a&gt;&lt;\/p&gt;<\/span>\r\n\r\n  <span class=\"nt\">&lt;div<\/span> <span class=\"na\">style=<\/span><span class=\"s\">\"margin-left:20px;margin-top:20px\"<\/span><span class=\"nt\">&gt;<\/span>\r\n\r\na href= {{member.pk}}\/update&gt;\u66f4\u65b0<span class=\"nt\">&lt;\/a&gt;&lt;p<\/span> <span class=\"nt\">\/&gt;<\/span>\r\n<span class=\"nt\">&lt;a<\/span> <span class=\"na\">href= <\/span><span class=\"s\">{{member.pk}}\/delete<\/span><span class=\"nt\">&gt;<\/span>\u524a\u9664<span class=\"nt\">&lt;\/a&gt;&lt;p<\/span> <span class=\"nt\">\/&gt;<\/span>\r\n<span class=\"nt\">&lt;a<\/span> <span class=\"na\">href= <\/span><span class=\"s\">\"\/namelist\/members\"<\/span><span class=\"nt\">&gt;<\/span>\u4e00\u89a7<span class=\"nt\">&lt;\/a&gt;&lt;p<\/span> <span class=\"nt\">\/&gt;<\/span>\r\n\r\n\r\n{% endblock %}\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code>{% extends \"namelist\/base_generic.html\" %}\r\n\r\n{% block content %}\r\n  <span class=\"nt\">&lt;h1&gt;<\/span>\u540d\u524d: {{ syozoku.name }}<span class=\"nt\">&lt;\/h1&gt;<\/span>\r\n  \u30db\u30fc\u30e0: {{ syozoku.home }}<span class=\"nt\">&lt;p<\/span> <span class=\"nt\">\/&gt;<\/span>\r\n\r\n{% endblock %}\r\n<\/code><\/pre>\n<p>\u521b\u5efa\u8d85\u7ea7\u7528\u6237\u4ee5\u4fbf\u63d2\u5165\u6570\u636e\u3002<\/p>\n<pre class=\"post-pre\"><code>python manage.py createsuperuser\r\n<\/code><\/pre>\n<p>9) \u7f16\u8f91 namelist\/admin.py<\/p>\n<pre class=\"post-pre\"><code><span class=\"kn\">from<\/span> <span class=\"nn\">django.contrib<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">admin<\/span>\r\n\r\n<span class=\"c1\"># Register your models here.\r\n<\/span>\r\n<span class=\"kn\">from<\/span> <span class=\"nn\">namelist.models<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">Member<\/span><span class=\"p\">,<\/span> <span class=\"n\">Syozoku<\/span>\r\n\r\n<span class=\"n\">admin<\/span><span class=\"p\">.<\/span><span class=\"n\">site<\/span><span class=\"p\">.<\/span><span class=\"n\">register<\/span><span class=\"p\">(<\/span><span class=\"n\">Member<\/span><span class=\"p\">)<\/span>\r\n<span class=\"n\">admin<\/span><span class=\"p\">.<\/span><span class=\"n\">site<\/span><span class=\"p\">.<\/span><span class=\"n\">register<\/span><span class=\"p\">(<\/span><span class=\"n\">Syozoku<\/span><span class=\"p\">)<\/span>\r\n<\/code><\/pre>\n<p>10) \u542f\u52a8\u5f00\u53d1\u670d\u52a1\u5668\uff0c\u8bbf\u95ee http:\/\/127.0.0.1:8000\/admin\uff0c\u5e76\u8f93\u5165\u6570\u636e\u3002<\/p>\n<p>11) \u767b\u51fa\u7ba1\u7406\u5458\u8d26\u53f7\uff0c\u8bbf\u95eehttp:\/\/127.0.0.1:8000\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u8fd9\u662f\u5730\u533a\u56fe\u4e66\u9986\u7f51\u7ad9\u7684 Django \u6559\u7a0b\u7b2c\u4e00\u90e8\u5206\u7684\u5e94\u7528\u7bc7\u3002 \u8ba9\u6211\u4eec\u663e\u793a\u4e00\u4e0b\u65e5\u672c\u8db3\u7403\u4ee3\u8868\u961f\u7684\u7403\u5458\u540d\u5355\u3002 \u6211\u4eec\u5c06\u663e [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-49579","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>Django \u6559\u7a0b\uff1a\u6b66\u58eb\u65e5\u672c\u9009\u624b\u540d\u5355 - 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\/django-\u6559\u7a0b\uff1a\u6b66\u58eb\u65e5\u672c\u9009\u624b\u540d\u5355\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Django \u6559\u7a0b\uff1a\u6b66\u58eb\u65e5\u672c\u9009\u624b\u540d\u5355\" \/>\n<meta property=\"og:description\" content=\"\u8fd9\u662f\u5730\u533a\u56fe\u4e66\u9986\u7f51\u7ad9\u7684 Django \u6559\u7a0b\u7b2c\u4e00\u90e8\u5206\u7684\u5e94\u7528\u7bc7\u3002 \u8ba9\u6211\u4eec\u663e\u793a\u4e00\u4e0b\u65e5\u672c\u8db3\u7403\u4ee3\u8868\u961f\u7684\u7403\u5458\u540d\u5355\u3002 \u6211\u4eec\u5c06\u663e [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/django-\u6559\u7a0b\uff1a\u6b66\u58eb\u65e5\u672c\u9009\u624b\u540d\u5355\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2023-06-22T17:42:19+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-04-30T07:50:38+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d8c36913a08637a6d002a\/2-0.png\" \/>\n<meta name=\"author\" content=\"\u6e05, \u5b87\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u6e05, \u5b87\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 \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\/django-%e6%95%99%e7%a8%8b%ef%bc%9a%e6%ad%a6%e5%a3%ab%e6%97%a5%e6%9c%ac%e9%80%89%e6%89%8b%e5%90%8d%e5%8d%95\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/django-%e6%95%99%e7%a8%8b%ef%bc%9a%e6%ad%a6%e5%a3%ab%e6%97%a5%e6%9c%ac%e9%80%89%e6%89%8b%e5%90%8d%e5%8d%95\/\",\"name\":\"Django \u6559\u7a0b\uff1a\u6b66\u58eb\u65e5\u672c\u9009\u624b\u540d\u5355 - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2023-06-22T17:42:19+00:00\",\"dateModified\":\"2024-04-30T07:50:38+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/1a6ecd3d914d22a5ac32791ffc1fbd8e\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/django-%e6%95%99%e7%a8%8b%ef%bc%9a%e6%ad%a6%e5%a3%ab%e6%97%a5%e6%9c%ac%e9%80%89%e6%89%8b%e5%90%8d%e5%8d%95\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/django-%e6%95%99%e7%a8%8b%ef%bc%9a%e6%ad%a6%e5%a3%ab%e6%97%a5%e6%9c%ac%e9%80%89%e6%89%8b%e5%90%8d%e5%8d%95\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/django-%e6%95%99%e7%a8%8b%ef%bc%9a%e6%ad%a6%e5%a3%ab%e6%97%a5%e6%9c%ac%e9%80%89%e6%89%8b%e5%90%8d%e5%8d%95\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/zh\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Django \u6559\u7a0b\uff1a\u6b66\u58eb\u65e5\u672c\u9009\u624b\u540d\u5355\"}]},{\"@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\/1a6ecd3d914d22a5ac32791ffc1fbd8e\",\"name\":\"\u6e05, \u5b87\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/4b2016c18459a605fc469c7566608f5686491baa112d0871ee613f61b7210565?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/4b2016c18459a605fc469c7566608f5686491baa112d0871ee613f61b7210565?s=96&d=mm&r=g\",\"caption\":\"\u6e05, \u5b87\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/qingyu\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/django-%e6%95%99%e7%a8%8b%ef%bc%9a%e6%ad%a6%e5%a3%ab%e6%97%a5%e6%9c%ac%e9%80%89%e6%89%8b%e5%90%8d%e5%8d%95\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Django \u6559\u7a0b\uff1a\u6b66\u58eb\u65e5\u672c\u9009\u624b\u540d\u5355 - 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\/django-\u6559\u7a0b\uff1a\u6b66\u58eb\u65e5\u672c\u9009\u624b\u540d\u5355\/","og_locale":"zh_CN","og_type":"article","og_title":"Django \u6559\u7a0b\uff1a\u6b66\u58eb\u65e5\u672c\u9009\u624b\u540d\u5355","og_description":"\u8fd9\u662f\u5730\u533a\u56fe\u4e66\u9986\u7f51\u7ad9\u7684 Django \u6559\u7a0b\u7b2c\u4e00\u90e8\u5206\u7684\u5e94\u7528\u7bc7\u3002 \u8ba9\u6211\u4eec\u663e\u793a\u4e00\u4e0b\u65e5\u672c\u8db3\u7403\u4ee3\u8868\u961f\u7684\u7403\u5458\u540d\u5355\u3002 \u6211\u4eec\u5c06\u663e [&hellip;]","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/django-\u6559\u7a0b\uff1a\u6b66\u58eb\u65e5\u672c\u9009\u624b\u540d\u5355\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2023-06-22T17:42:19+00:00","article_modified_time":"2024-04-30T07:50:38+00:00","og_image":[{"url":"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d8c36913a08637a6d002a\/2-0.png"}],"author":"\u6e05, \u5b87","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u6e05, \u5b87","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"6 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/django-%e6%95%99%e7%a8%8b%ef%bc%9a%e6%ad%a6%e5%a3%ab%e6%97%a5%e6%9c%ac%e9%80%89%e6%89%8b%e5%90%8d%e5%8d%95\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/django-%e6%95%99%e7%a8%8b%ef%bc%9a%e6%ad%a6%e5%a3%ab%e6%97%a5%e6%9c%ac%e9%80%89%e6%89%8b%e5%90%8d%e5%8d%95\/","name":"Django \u6559\u7a0b\uff1a\u6b66\u58eb\u65e5\u672c\u9009\u624b\u540d\u5355 - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2023-06-22T17:42:19+00:00","dateModified":"2024-04-30T07:50:38+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/1a6ecd3d914d22a5ac32791ffc1fbd8e"},"breadcrumb":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/django-%e6%95%99%e7%a8%8b%ef%bc%9a%e6%ad%a6%e5%a3%ab%e6%97%a5%e6%9c%ac%e9%80%89%e6%89%8b%e5%90%8d%e5%8d%95\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/django-%e6%95%99%e7%a8%8b%ef%bc%9a%e6%ad%a6%e5%a3%ab%e6%97%a5%e6%9c%ac%e9%80%89%e6%89%8b%e5%90%8d%e5%8d%95\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/zh\/blog\/django-%e6%95%99%e7%a8%8b%ef%bc%9a%e6%ad%a6%e5%a3%ab%e6%97%a5%e6%9c%ac%e9%80%89%e6%89%8b%e5%90%8d%e5%8d%95\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/zh\/blog\/"},{"@type":"ListItem","position":2,"name":"Django \u6559\u7a0b\uff1a\u6b66\u58eb\u65e5\u672c\u9009\u624b\u540d\u5355"}]},{"@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\/1a6ecd3d914d22a5ac32791ffc1fbd8e","name":"\u6e05, \u5b87","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/4b2016c18459a605fc469c7566608f5686491baa112d0871ee613f61b7210565?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/4b2016c18459a605fc469c7566608f5686491baa112d0871ee613f61b7210565?s=96&d=mm&r=g","caption":"\u6e05, \u5b87"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/qingyu\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/django-%e6%95%99%e7%a8%8b%ef%bc%9a%e6%ad%a6%e5%a3%ab%e6%97%a5%e6%9c%ac%e9%80%89%e6%89%8b%e5%90%8d%e5%8d%95\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/49579","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\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=49579"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/49579\/revisions"}],"predecessor-version":[{"id":92831,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/49579\/revisions\/92831"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=49579"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=49579"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=49579"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}