{"id":50,"date":"2023-08-28T06:44:21","date_gmt":"2023-08-27T22:44:21","guid":{"rendered":"https:\/\/techblog.hxdy2013.com\/?p=50"},"modified":"2023-09-21T04:03:41","modified_gmt":"2023-09-20T20:03:41","slug":"django-admin-4-2-4-on-ubuntu-22-04","status":"publish","type":"post","link":"https:\/\/techblog.hxdy2013.com\/?p=50","title":{"rendered":"Django-Admin 4.2.4 on Ubuntu 22.04"},"content":{"rendered":"<div class=\"wp-block-post-date\"><time datetime=\"2023-08-28T06:44:21+08:00\">2023-08-28<\/time><\/div>\n\n\n<p class=\"wp-block-paragraph\">Django\uff08\u53d1\u97f3\uff1a[`d\u0292\u00e6\u014b\u0261\u0259\u028a]\uff0cD\u4e0d\u53d1\u97f3\uff09\u662f\u4e00\u4e2a\u5f00\u6e90Web\u5e94\u7528\u6846\u67b6\uff0c\u7531Python\u5199\u6210\uff0c\u9075\u5faaMVC\/MTV\u6a21\u5f0f\uff0c\u5728BSD\u8bb8\u53ef\u8bc1\u4e0b\u53d1\u884c\u3002<br>MIS\uff08\u4fe1\u606f\u7ba1\u7406\u7cfb\u7edf\uff09\u7684\u57fa\u7840\u6570\u636e\u7ef4\u62a4\uff08CURD\u589e\u6539\u67e5\u5220\uff09\u91cd\u590d\u4e14\u7e41\u7410\uff0cDjango-Admin\u8bfb\u53d6\u5143\u6570\u636e\u81ea\u52a8\u751f\u6210\u76f8\u5e94\u7684\u7ba1\u7406\u754c\u9762\uff0c\u7ba1\u7406\u8005\u53ef\u4ee5\u901a\u8fc7Django-Admin\u7ef4\u62a4\u57fa\u7840\u6570\u636e\u4ee5\u53ca\u8bbe\u7f6e\u6743\u9650\u3002Django-Admin\u6a21\u5757\u5177\u6709\u5f88\u5f3a\u7684\u53ef\u6269\u5c55\u6027\uff0c\u53ef\u4ee5\u57fa\u4e8e\u539f\u6846\u67b6\u505a\u5b9a\u5236\u5316\u5f00\u53d1\u3002<br>\u672c\u6587\u8bb2\u8ff0\u5982\u4f55\u5728Ubuntu 22.04\u4e2d\u5b89\u88c5Django-Admin\uff0c\u5e76\u5b9e\u9645\u521b\u5efa\u4e00\u4e2aMIS\u9879\u76ee\u3002<\/p>\n\n\n\n<p class=\"has-large-font-size wp-block-paragraph\">\u786c\u4ef6\u73af\u5883<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Lenovo ThinkPad T14 Gen2 20W1S3H811: Intel i5-1145G7 + DDR4 16GB + NVMe 512GB<\/p>\n\n\n\n<p class=\"has-large-font-size wp-block-paragraph\">\u865a\u62df\u673a\u5bbf\u4e3b\u73af\u5883<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Win11 x64 Build 22621.2134 \u82f1\u6587\u4e13\u4e1a\u7248 + VirtualBox v7.0.8 r156879<\/p>\n\n\n\n<p class=\"has-large-font-size wp-block-paragraph\">\u865a\u62df\u673a\u5ba2\u6237\u673a\u8f6f\u4ef6\u73af\u5883<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Xubuntu 22.04\u6700\u5c0f\u5b89\u88c5\uff0croot\u8d26\u53f7\u5df2\u542f\u7528\uff0cAPT\u5df2\u6362\u56fd\u5185\u6e90\uff0capt update\u5df2\u5b8c\u6210\uff0cScreen 4.09.00 + Net-Tools + Openssh-Server 8.9p1\u5df2\u5b89\u88c5\uff0copenssh-server\u5141\u8bb8root\u8fdc\u7a0b\u767b\u5f55\u3002<\/p>\n\n\n\n<p class=\"has-large-font-size wp-block-paragraph\">\u5b89\u88c5Django\u6846\u67b6\u4e8ePython\u865a\u62df\u73af\u5883<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u5b89\u88c5python3-pip<\/strong><br><mark style=\"background-color:#9DFF20\" class=\"has-inline-color\"><code>apt install python3-pip<\/code><\/mark><br><strong>\u67e5\u770bpip\u7248\u672c<\/strong><br><code><mark style=\"background-color:#9DFF20\" class=\"has-inline-color\">pip -V<\/mark><br><mark style=\"background-color:#ffd700\" class=\"has-inline-color\">pip 22.0.2 from \/usr\/lib\/python3\/dist-packages\/pip (python 3.10)<\/mark><br><\/code><strong>\u5b89\u88c5virtualenv<\/strong><br><mark style=\"background-color:#9DFF20\" class=\"has-inline-color\"><code>pip install virtualenv<\/code><\/mark><br><strong>\u67e5\u770bvirtualenv\u7248\u672c<\/strong><br><code><mark style=\"background-color:#9DFF20\" class=\"has-inline-color\">virtualenv --version<\/mark><br><mark style=\"background-color:#ffd700\" class=\"has-inline-color\">virtualenv 20.24.3 from \/usr\/local\/lib\/python3.10\/dist-packages\/virtualenv\/__init__.py<\/mark><br><\/code><strong>\u521b\u5efapython\u865a\u62df\u73af\u5883myEnv<\/strong><br><code><mark style=\"background-color:#9DFF20\" class=\"has-inline-color\">virtualenv myEnv<\/mark><br><mark style=\"background-color:#ffd700\" class=\"has-inline-color\">created virtual environment CPython3.10.12.final.0-64 in 922ms<\/mark><br><\/code><strong>\u6fc0\u6d3b\u865a\u62df\u73af\u5883myEnv<\/strong><br><code><mark style=\"background-color:#9DFF20\" class=\"has-inline-color\">cd myEnv<\/mark><br><mark style=\"background-color:#9DFF20\" class=\"has-inline-color\">source bin\/activate<\/mark><br><\/code><strong>\u5b89\u88c5Django\u6846\u67b6<\/strong><br><code>(myEnv) ~\/myEnv#<mark style=\"background-color:#9DFF20\" class=\"has-inline-color\">pip install django<\/mark><\/code><br><strong>\u68c0\u67e5Django\u7248\u672c<\/strong><br><code>(myEnv) ~\/myEnv#<mark style=\"background-color:#9DFF20\" class=\"has-inline-color\">django-admin --version<\/mark><br><mark style=\"background-color:#ffd700\" class=\"has-inline-color\">4.2.4<\/mark><\/code><\/p>\n\n\n\n<p class=\"has-large-font-size wp-block-paragraph\">\u5b9e\u9645\u521b\u5efa\u4e00\u4e2aMIS\u9879\u76ee<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u521b\u5efa\u4e00\u4e2a\u7ba1\u7406Wi-Fi\u4fe1\u606f\uff0c\u5305\u62ec\u5730\u70b9\u3001SSID\u3001BSSID\u3001\u5bc6\u7801\u7b49\u7684MIS\u9879\u76ee\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5047\u8bbe\u5df2\u7ecf\u521b\u5efa\u597d\u7684\u865a\u62df\u73af\u5883myEnv\u4e2d\u4e5f\u5b89\u88c5\u597d\u4e86Django\u6846\u67b6\u3002<br><strong>\u521b\u5efa\u9879\u76eemyProject<\/strong><br><code>(myEnv) ~\/myEnv#<mark style=\"background-color:#9DFF20\" class=\"has-inline-color\">django-admin startproject myProject<\/mark><\/code>    # \u521b\u5efa\u540d\u4e3amyProject\u7684\u9879\u76ee<br>\u7f16\u8f91myProject\/myProject\/settings.py\u4f7fdjango-admin\u5141\u8bb8\u4ece\u5176\u4ed6IP\u5730\u5740\u8bbf\u95ee<br><code>(myEnv) ~\/myEnv#<mark style=\"background-color:#9DFF20\" class=\"has-inline-color\">cd myProject\/myProject<\/mark><\/code>  # \u5207\u6362\/myEnv\/myProject\/myProject\u4e3a\u5f53\u524d\u76ee\u5f55<br><code>(myEnv) ~\/myEnv\/myProject\/myProject#<mark style=\"background-color:#9DFF20\" class=\"has-inline-color\">vi settings.py<\/mark><\/code>    # \u7f16\u8f91settings.py<br>\u627e\u5230<mark style=\"background-color:#ffd700\" class=\"has-inline-color\"><code>ALLOWED_HOSTS = []<\/code><\/mark>\uff0c\u6539\u4e3a<mark style=\"background-color:#9DFF20\" class=\"has-inline-color\"><code>ALLOWED_HOSTS = ['*']<\/code><\/mark>\uff0c\u4fdd\u5b58\u9000\u51fa\u3002<br><strong>\u8fc1\u79fbDjango\u6570\u636e\u5e93<\/strong><br><code>(myEnv) ~\/myEnv\/myProject\/myProject#<mark style=\"background-color:#9DFF20\" class=\"has-inline-color\">cd ..<\/mark><\/code>    # \u5207\u6362\u5230\u4e0a\u4e00\u7ea7\u76ee\u5f55\u4e3a\u5f53\u524d\u76ee\u5f55<br><code>(myEnv) ~\/myEnv\/myProject#<mark style=\"background-color:#9DFF20\" class=\"has-inline-color\">python manage.py migrate<\/mark><\/code>    # \u8fc1\u79fb\u6570\u636e\u5e93<br>\u8fc1\u79fb\u5b8c\u6210\u540e\uff0c\/myEnv\/myProject\u76ee\u5f55\u4e0b\u4f1a\u51fa\u73b0db.sqlite3\u6587\u4ef6<br><strong>\u521b\u5efasuperuser<\/strong><br><code>(myEnv) ~\/myEnv\/myProject#<mark style=\"background-color:#9DFF20\" class=\"has-inline-color\">python manage.py createsuperuser<\/mark><br><mark style=\"background-color:#ffd700\" class=\"has-inline-color\">Username (leave blank to use 'root'):<br>Email address:<br>Password:<br>Password (again):<br>Superuser created successfully.<\/mark><br><\/code><strong>\u542f\u52a8Django-Admin\u76d1\u542cTCP\/IP\u7aef\u53e38000<\/strong><br><code>(myEnv) ~\/myEnv\/myProject#<mark style=\"background-color:#9DFF20\" class=\"has-inline-color\">python manage.py runserver 0:8000<\/mark><\/code>    # 0:8000\u4ee3\u8868\u4e3b\u673a\u6240\u6709\u7f51\u53618000\u7aef\u53e3\u90fd\u76d1\u542c\uff1b\u53ea\u60f3\u5728\u4e3b\u673a\u67d0\u4e2a\u6307\u5b9a\u7684\u7f51\u5361\u76d1\u542c\uff0c\u53ef\u4ee5\u628a0\u6362\u6210\u8be5\u7f51\u5361\u7684IP\u5730\u5740\uff0c\u4f8b\u5982192.168.1.1:8000\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5728\u6d4f\u89c8\u5668\u5730\u5740\u680f\u8f93\u5165 https:\/\/Django-Admin\u4e3b\u673aIP:8000\/\uff0c\u53ef\u4ee5\u770b\u5230\u4ee5\u4e0b\u9875\u9762\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"780\" height=\"311\" src=\"https:\/\/techblog.hxdy2013.com\/wp-content\/uploads\/2023\/08\/15.png\" alt=\"\" class=\"wp-image-57\" srcset=\"https:\/\/techblog.hxdy2013.com\/wp-content\/uploads\/2023\/08\/15.png 780w, https:\/\/techblog.hxdy2013.com\/wp-content\/uploads\/2023\/08\/15-300x120.png 300w, https:\/\/techblog.hxdy2013.com\/wp-content\/uploads\/2023\/08\/15-768x306.png 768w\" sizes=\"auto, (max-width: 780px) 100vw, 780px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u5728\u6d4f\u89c8\u5668\u5730\u5740\u680f\u8f93\u5165 https:\/\/Django-Admin\u4e3b\u673aIP:8000\/admin\uff0c\u6253\u5f00Django-Admin\u767b\u5f55\u9875\u9762\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"394\" height=\"289\" src=\"https:\/\/techblog.hxdy2013.com\/wp-content\/uploads\/2023\/08\/16.png\" alt=\"\" class=\"wp-image-58\" srcset=\"https:\/\/techblog.hxdy2013.com\/wp-content\/uploads\/2023\/08\/16.png 394w, https:\/\/techblog.hxdy2013.com\/wp-content\/uploads\/2023\/08\/16-300x220.png 300w\" sizes=\"auto, (max-width: 394px) 100vw, 394px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u8f93\u5165\u524d\u9762\u521b\u5efa\u7684superuser\u8d26\u53f7\u5bc6\u7801\uff0c\u767b\u5f55Django-Admin\u7ba1\u7406\u540e\u53f0\u3002\u53ef\u4ee5\u770b\u5230\u5df2\u7ecf\u9ed8\u8ba4\u521b\u5efa\u4e86AUTHENTICATON AND AUTHORIZATION\u8fd9\u4e2aApp\uff0c\u91cc\u9762\u5305\u62ecGroups\u548cUsers\u8fd9\u4e24\u4e2a\u5df2\u6ce8\u518c\u7684admin\u7c7b\uff08\u540e\u9762\u8be6\u7ec6\u8bb2\uff09\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"985\" height=\"307\" src=\"https:\/\/techblog.hxdy2013.com\/wp-content\/uploads\/2023\/08\/17.png\" alt=\"\" class=\"wp-image-59\" srcset=\"https:\/\/techblog.hxdy2013.com\/wp-content\/uploads\/2023\/08\/17.png 985w, https:\/\/techblog.hxdy2013.com\/wp-content\/uploads\/2023\/08\/17-300x94.png 300w, https:\/\/techblog.hxdy2013.com\/wp-content\/uploads\/2023\/08\/17-768x239.png 768w\" sizes=\"auto, (max-width: 985px) 100vw, 985px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u81f3\u6b64\uff0cDjango-Admin\u57fa\u7840\u90e8\u7f72\u5b8c\u6210\uff0c\u4e0b\u9762\u521b\u5efaApp\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u6309Ctrl-C\u505c\u6b62Django-Admin<\/strong><br><code><mark style=\"background-color:#9DFF20\" class=\"has-inline-color\">^C<\/mark>(myEnv) ~\/myEnv\/myProject#<\/code><br><strong>\u521b\u5efa\u5e94\u7528myApp<\/strong><br><code>(myEnv) ~\/myEnv\/myProject#<mark style=\"background-color:#9DFF20\" class=\"has-inline-color\">python manage.py startapp wifi<\/mark><\/code>    # \u521b\u5efa\u540d\u4e3awifi\u7684\u5e94\u7528<br><strong>\u628a\u5e94\u7528WiFi\u6dfb\u52a0\u5230myProject\u9879\u76ee<\/strong><br><code>(myEnv) ~\/myEnv\/myProject#<mark style=\"background-color:#9DFF20\" class=\"has-inline-color\">cd myProject<\/mark><\/code>  # \u5207\u6362\/myEnv\/myProject\/myProject\u4e3a\u5f53\u524d\u76ee\u5f55<br><code>(myEnv) ~\/myEnv\/myProject\/myProject#<mark style=\"background-color:#9DFF20\" class=\"has-inline-color\">vi settings.py<\/mark><\/code>    # \u7f16\u8f91settings.py<br>\u5728INSTALLED_APPS[]\u4e2d\u589e\u52a0\u4e00\u884c<br><mark style=\"background-color:#9DFF20\" class=\"has-inline-color\"><code>'myApp',<\/code><\/mark><br><strong>\u521b\u5efa\u5e94\u7528WiFi\u7684ORM\u6a21\u578b\/\u6570\u636e\u5e93\u7ed3\u6784<\/strong><br><code>(myEnv) ~\/myEnv\/myProject\/myProject#<mark style=\"background-color:#9DFF20\" class=\"has-inline-color\">cd ..\/wifi<\/mark><\/code>    # \u5207\u6362\/myEnv\/myProject\/wifi\u4e3a\u5f53\u524d\u76ee\u5f55<br><code>(myEnv) ~\/myEnv\/myProject\/wifi#<mark style=\"background-color:#9DFF20\" class=\"has-inline-color\">vi models.py<\/mark><\/code>    # \u7f16\u8f91ORM\u6a21\u578b\u6587\u4ef6models.py<br>\u8f93\u5165################################\u4e4b\u95f4\u7684\u5185\u5bb9<br>################################<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><mark style=\"background-color:#9DFF20\" class=\"has-inline-color\">from django.db import models\n\n# Create your models here.\nclass GenericModel(models.Model):\n    publishDatetime = models.DateTimeField(u'Publish Datetime', auto_now_add=True, editable=True)\n    updateDatetime = models.DateTimeField(u'Update Datetime', auto_now=True, null=True)\n\n    class Meta:\n        abstract = True\n\nclass WiFi(GenericModel):\n    location = models.CharField(u'Location', max_length=256, null=True, blank=True)\n    ssid = models.CharField(u'SSID', max_length=256, null=True, blank=True)\n    bssid = models.CharField(u'BSSID', max_length=17, null=True, blank=True)\n    password = models.CharField(u'Password', max_length=256, null=True, blank=True)\n\n    class Meta:\n        ordering = ('location', 'ssid',)\n        verbose_name = 'WiFi'\n        verbose_name_plural = 'WiFi'\n\n    def __str__(self):\n        if self.ssid is not None:\n            return self.ssid\n        return '&#91;UnknownWiFi]'<\/mark><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">################################<br><strong>\u5c06ORM\u6a21\u578b\u8fc1\u79fb\u5230\u6570\u636e\u5e93<\/strong><br><code>(myEnv) ~\/myEnv\/myProject\/wifi#<mark style=\"background-color:#9DFF20\" class=\"has-inline-color\">cd ..<\/mark><\/code>    # \u5207\u6362\u4e0a\u4e00\u7ea7\u76ee\u5f55\u4e3a\u5f53\u524d\u76ee\u5f55<br><code>(myEnv) ~\/myEnv\/myProject#<mark style=\"background-color:#9DFF20\" class=\"has-inline-color\">python manage.py makemigrations wifi<\/mark><\/code>    # \u521b\u5efa\u8fc1\u79fb<br><code>(myEnv) ~\/myEnv\/myProject#<mark style=\"background-color:#9DFF20\" class=\"has-inline-color\">python manage.py migrate wifi<\/mark><\/code>    # \u8fc1\u79fb<br><strong>\u6ce8\u518cadmin\u7c7b<\/strong><br><code>(myEnv) ~\/myEnv\/myProject#<mark style=\"background-color:#9DFF20\" class=\"has-inline-color\">cd wifi<\/mark><\/code>    # \u5207\u6362wifi\u4e3a\u5f53\u524d\u76ee\u5f55<br><code>(myEnv) ~\/myEnv\/myProject\/wifi#<mark style=\"background-color:#9DFF20\" class=\"has-inline-color\">vi admin.py<\/mark><\/code>    # \u7f16\u8f91admin.py<br>\u8f93\u5165################################\u4e4b\u95f4\u7684\u5185\u5bb9<br>################################<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><mark style=\"background-color:#9DFF20\" class=\"has-inline-color\">from django.contrib import admin\n\n# Register your models here.\nfrom wifi.models import WiFi\n\n@admin.register(WiFi)\nclass WiFiAdmin(admin.ModelAdmin):\n    list_display = ('id', 'location', 'ssid', 'bssid', 'password',)\n    list_per_page = 100\n    ordering = ('location', 'ssid',)\n    #list_editable = &#91;'location', 'bssid',]\n    list_display_links = ('id', 'location', 'ssid', 'bssid',)<\/mark><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">################################<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u542f\u52a8Django-Admin\u76d1\u542cTCP\/IP\u7aef\u53e38000<\/strong><br><code>(myEnv) ~\/myEnv\/myProject\/wifi#<mark style=\"background-color:#9DFF20\" class=\"has-inline-color\">cd ..<\/mark><br>(myEnv) ~\/myEnv\/myProject#<mark style=\"background-color:#9DFF20\" class=\"has-inline-color\">python manage.py runserver 0:8000<\/mark><\/code><br>\u5728\u6d4f\u89c8\u5668\u5730\u5740\u680f\u8f93\u5165 https:\/\/Django-Admin\u4e3b\u673aIP:8000\/admin\uff0c\u7528superuser\u8d26\u53f7\u5bc6\u7801\u767b\u5f55\u3002\u53ef\u4ee5\u770b\u5230\u65b0\u589e\u4e86wifi\u5e94\u7528(Django-Admin\u9ed8\u8ba4\u628aApp\u540d\u79f0\u5747\u5927\u5199)\uff0c\u91cc\u9762\u6709\u540d\u4e3aWiFi\u7684admin\u7c7b\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"655\" height=\"245\" src=\"https:\/\/techblog.hxdy2013.com\/wp-content\/uploads\/2023\/08\/18.png\" alt=\"\" class=\"wp-image-61\" srcset=\"https:\/\/techblog.hxdy2013.com\/wp-content\/uploads\/2023\/08\/18.png 655w, https:\/\/techblog.hxdy2013.com\/wp-content\/uploads\/2023\/08\/18-300x112.png 300w\" sizes=\"auto, (max-width: 655px) 100vw, 655px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u70b9\u51fb<mark style=\"background-color:#ffd700\" class=\"has-inline-color\"><code>WiFi<\/code><\/mark>\u8fdb\u5165WiFi\u5e94\u7528\uff1b\u518d\u70b9\u51fb<mark style=\"background-color:#ffd700\" class=\"has-inline-color\"><code>ADD WIFI \u2795<\/code><\/mark>\u5c1d\u8bd5\u589e\u52a0\u4e00\u6761\u8bb0\u5f55\uff0c\u70b9\u51fbSave\u4fdd\u5b58\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"412\" src=\"https:\/\/techblog.hxdy2013.com\/wp-content\/uploads\/2023\/08\/19.png\" alt=\"\" class=\"wp-image-62\" srcset=\"https:\/\/techblog.hxdy2013.com\/wp-content\/uploads\/2023\/08\/19.png 768w, https:\/\/techblog.hxdy2013.com\/wp-content\/uploads\/2023\/08\/19-300x161.png 300w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"944\" height=\"318\" src=\"https:\/\/techblog.hxdy2013.com\/wp-content\/uploads\/2023\/08\/20.png\" alt=\"\" class=\"wp-image-63\" srcset=\"https:\/\/techblog.hxdy2013.com\/wp-content\/uploads\/2023\/08\/20.png 944w, https:\/\/techblog.hxdy2013.com\/wp-content\/uploads\/2023\/08\/20-300x101.png 300w, https:\/\/techblog.hxdy2013.com\/wp-content\/uploads\/2023\/08\/20-768x259.png 768w\" sizes=\"auto, (max-width: 944px) 100vw, 944px\" \/><\/figure>\n\n\n\n<p class=\"has-large-font-size wp-block-paragraph\">\u8fc1\u79fbDjango-Admin\u9879\u76ee<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u5728\u6e90\u670d\u52a1\u5668\u4e0a\u5907\u4efd<\/strong><br>\u5728\u6e90\u670d\u52a1\u5668\u4e0a\u6309\u4e0b<mark style=\"background-color:#9DFF20\" class=\"has-inline-color\"><code>Ctrl-C<\/code><\/mark>\u505c\u6b62Django-Admin\u76d1\u542c\uff0c<mark style=\"background-color:#9DFF20\" class=\"has-inline-color\"><code>deactivate<\/code><\/mark>\u9000\u51fa\u865a\u62df\u73af\u5883\uff0c\u5c06myEnv\/myProject\u6253\u5305\u538b\u7f29: <mark style=\"background-color:#9DFF20\" class=\"has-inline-color\"><code>tar -zcvf ..\/myProject.datetime.tar.gz .\/*<\/code><\/mark><br><strong>\u5728\u76ee\u7684\u670d\u52a1\u5668\u4e0a\u6062\u590d<\/strong><br>\u5728\u76ee\u7684\u670d\u52a1\u5668\u4e0a\u6309\u4e0b<mark style=\"background-color:#9DFF20\" class=\"has-inline-color\"><code>Ctrl-C<\/code><\/mark>\u505c\u6b62Django-Admin\u76d1\u542c\uff0c<mark style=\"background-color:#9DFF20\" class=\"has-inline-color\"><code>deactivate<\/code><\/mark>\u9000\u51fa\u865a\u62df\u73af\u5883\uff0c\u5728\u9879\u76ee\u76ee\u5f55myProject\u4e2d\u89e3\u538b\u7f29: <mark style=\"background-color:#9DFF20\" class=\"has-inline-color\"><code>tar -zxvf ..\/myProject.datetime.tar.gz .<\/code><\/mark><br>\u5728\u76ee\u7684\u670d\u52a1\u5668\u4e0a\u6fc0\u6d3b\u865a\u62df\u73af\u5883<code>myEnv: #<mark style=\"background-color:#9DFF20\" class=\"has-inline-color\">source bin\/activate<\/mark><\/code>\uff0c\u542f\u7528Django-Admin\u76d1\u542c: <mark style=\"background-color:#9DFF20\" class=\"has-inline-color\"><code>python manage.py runserver 0:8000<\/code><\/mark><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Django\uff08\u53d1\u97f3\uff1a[`d\u0292\u00e6\u014b\u0261\u0259\u028a]\uff0cD\u4e0d\u53d1\u97f3\uff09\u662f\u4e00\u4e2a\u5f00\u6e90Web\u5e94\u7528\u6846\u67b6\uff0c\u7531Python\u5199\u6210\uff0c\u9075\u5faaMVC\/MTV\u6a21\u5f0f\uff0c\u5728BSD\u8bb8\u53ef\u8bc1\u4e0b\u53d1\u884c\u3002MIS\uff08\u4fe1\u606f\u7ba1\u7406\u7cfb\u7edf\uff09\u7684\u57fa\u7840\u6570\u636e\u7ef4\u62a4\uff08CURD\u589e\u6539\u67e5\u5220\uff09\u91cd\u590d\u4e14\u7e41\u7410\uff0cDjango-Admin\u8bfb\u53d6\u5143\u6570\u636e\u81ea\u52a8\u751f\u6210\u76f8\u5e94\u7684\u7ba1\u7406\u754c\u9762\uff0c\u7ba1\u7406\u8005\u53ef\u4ee5\u901a\u8fc7Django-Admin\u7ef4\u62a4\u57fa\u7840\u6570\u636e\u4ee5\u53ca\u8bbe\u7f6e\u6743\u9650\u3002Django-Admin\u6a21\u5757\u5177\u6709\u5f88\u5f3a\u7684\u53ef\u6269\u5c55\u6027\uff0c\u53ef\u4ee5\u57fa\u4e8e\u539f\u6846\u67b6\u505a\u5b9a\u5236\u5316\u5f00\u53d1\u3002\u672c\u6587\u8bb2\u8ff0\u5982\u4f55\u5728Ubuntu 22.04\u4e2d\u5b89\u88c5Django-Admin\uff0c\u5e76\u5b9e\u9645\u521b\u5efa\u4e00\u4e2aMIS\u9879\u76ee\u3002 \u786c\u4ef6\u73af\u5883 Lenovo ThinkPad T14 Gen2 20W1S3H811: Intel i5-1145G7 + DDR4 16GB + NVMe 512GB \u865a\u62df\u673a\u5bbf\u4e3b\u73af\u5883 Win11 x64 Build 22621.2134 \u82f1\u6587\u4e13\u4e1a\u7248 + VirtualBox v7.0.8 r156879 \u865a\u62df\u673a\u5ba2\u6237\u673a\u8f6f\u4ef6\u73af\u5883 Xubuntu 22.04\u6700\u5c0f\u5b89\u88c5\uff0croot\u8d26\u53f7\u5df2\u542f\u7528\uff0cAPT\u5df2\u6362\u56fd\u5185\u6e90\uff0capt update\u5df2\u5b8c\u6210\uff0cScreen 4.09.00 + Net-Tools + Openssh-Server 8.9p1\u5df2\u5b89\u88c5\uff0copenssh-server\u5141\u8bb8root\u8fdc\u7a0b\u767b\u5f55\u3002 \u5b89\u88c5Django\u6846\u67b6\u4e8ePython\u865a\u62df\u73af\u5883 \u5b89\u88c5python3-pipapt install python3-pip\u67e5\u770bpip\u7248\u672cpip -Vpip 22.0.2 from \/usr\/lib\/python3\/dist-packages\/pip (python 3.10)\u5b89\u88c5virtualenvpip install virtualenv\u67e5\u770bvirtualenv\u7248\u672cvirtualenv &#8211;versionvirtualenv 20.24.3 from \/usr\/local\/lib\/python3.10\/dist-packages\/virtualenv\/__init__.py\u521b\u5efapython\u865a\u62df\u73af\u5883myEnvvirtualenv myEnvcreated virtual environment [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-50","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/techblog.hxdy2013.com\/index.php?rest_route=\/wp\/v2\/posts\/50","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/techblog.hxdy2013.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/techblog.hxdy2013.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/techblog.hxdy2013.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/techblog.hxdy2013.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=50"}],"version-history":[{"count":13,"href":"https:\/\/techblog.hxdy2013.com\/index.php?rest_route=\/wp\/v2\/posts\/50\/revisions"}],"predecessor-version":[{"id":218,"href":"https:\/\/techblog.hxdy2013.com\/index.php?rest_route=\/wp\/v2\/posts\/50\/revisions\/218"}],"wp:attachment":[{"href":"https:\/\/techblog.hxdy2013.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=50"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/techblog.hxdy2013.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=50"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/techblog.hxdy2013.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=50"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}