Django中的超級用戶和自己創建app原來這麼簡單!

{"type":"doc","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"這是我參與11月更文挑戰的第6天。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"系列文章第一篇:","attrs":{}},{"type":"link","attrs":{"href":"https://xie.infoq.cn/article/5ea83f69f83ae05f2c4d77400","title":"","type":null},"content":[{"type":"text","text":"https://xie.infoq.cn/article/5ea83f69f83ae05f2c4d77400","attrs":{}}]}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"創建一個admin賬戶","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"首先在vscode中我們啓動調試項目,然後打開終端,進入到對應項目目錄下,執行命令","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"pipenv shell","attrs":{}}],"attrs":{}},{"type":"text","text":"即可進入虛擬環境,然後再執行下面命令創建一個admin賬戶,","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"python manage.py createsuperuser\n","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/b8/b88936e0816253414277bad95b613e8b.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"創建成功後,我們可以瀏覽器訪問下方網址,(確保vscode中已經啓動項目了)","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"http://127.0.0.1:8000/admin\n","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"會自動跳轉到admin登錄界面,","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/7a/7a5936d74a3b49e9ba3f600ce846899f.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"輸入我們剛剛創建的賬號和密碼即可登錄django自帶的管理後臺,","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/81/81e3e21d0463d43f817d5f280e62e0e3.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"默認有兩個","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"Groups","attrs":{}}],"attrs":{}},{"type":"text","text":"(默認是空的),","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"Users","attrs":{}}],"attrs":{}},{"type":"text","text":"(裏面有我們自己創建的admin賬號,我們還可以在這裏直接創建其他管理員賬號)。","attrs":{}}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"settings.py基本介紹","attrs":{}}]},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/42/42bcce30b696b892065f584d8e682290.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在vscode(當然你也可以用pycharm或者其他代碼開發工具)打開settings.py文件你可以看到裏面的源碼,通過部分英文註釋你基本可以瞭解一些代碼的含義,這裏我挑選了一些需要修改的、常用的配置,給大家解釋一下,我認爲你是完全小白,所以還是介紹一下(當然你也可以跳過)。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"# 也可以前往官網查看相關介紹(推薦)\nFor more information on this file, see\nhttps://docs.djangoproject.com/en/3.2/topics/settings/\n\nFor the full list of settings and their values, see\nhttps://docs.djangoproject.com/en/3.2/ref/settings/\n","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"# True 表示會在終端輸出調試信息,在生產環境中需要設置爲False\nDEBUG = True\n\n# 可以設置允許訪問的ip地址,默認是 127.0.0.1\nALLOWED_HOSTS = []\n\n# app配置說明,每個新建的app都要在這裏安裝\nINSTALLED_APPS = [\n 'django.contrib.admin',\n 'django.contrib.auth',\n 'django.contrib.contenttypes',\n 'django.contrib.sessions',\n 'django.contrib.messages',\n 'django.contrib.staticfiles',\n]\n\n# 模版配置,默認是DjangoTemplates,也可以改成大家熟知的Jinja2\n# 這裏我們需要設置一下DIRS,添加一個根目錄下的templates文件\n# APP_DIRS設置爲True,設置爲False後無法正常使用Django admin後臺\n# 所有的模板我們都放到根目錄下的templates文件,統一管理\nTEMPLATES = [\n {\n 'BACKEND': 'django.template.backends.django.DjangoTemplates',\n 'DIRS': [os.path.join(BASE_DIR, 'templates')],\n 'APP_DIRS': True,\n 'OPTIONS': {\n 'context_processors': [\n 'django.template.context_processors.debug',\n 'django.template.context_processors.request',\n 'django.contrib.auth.context_processors.auth',\n 'django.contrib.messages.context_processors.messages',\n ],\n },\n },\n]\n\n# 數據庫配置,默認使用sqlite3\nDATABASES = {\n 'default': {\n 'ENGINE': 'django.db.backends.sqlite3',\n 'NAME': BASE_DIR / 'db.sqlite3',\n }\n}\n\n# 項目語言\nLANGUAGE_CODE = 'en-us'\n# 時間時區\nTIME_ZONE = 'UTC'\n\n# 靜態資源文件路徑\nSTATIC_URL = '/static/'\n","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"通過上面註釋解釋,首先我們可以修改一下項目語言和時區,改爲中文,時區也改成我們這邊的~","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"LANGUAGE_CODE = 'zh-hans'\n\nTIME_ZONE = 'Asia/Shanghai'\n","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"修改後保存,項目是以調試模式開啓的,所以保存後系統會自動更新,無需我們再次啓動項目,我們直接刷新前面訪問的管理後臺頁面,就會發現頁面內容變成中文了。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/b0/b067336758d09fa109f2d0bd5e8d0bf5.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"創建blog app","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"首先在vscode中我們啓動調試項目,然後打開終端,進入到對應項目目錄下,執行命令","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"pipenv shell","attrs":{}}],"attrs":{}},{"type":"text","text":"即可進入虛擬環境,然後再執行下面命令創建一個admin賬戶,","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"python manage.py startapp blog\n","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"運行後,我們看目錄結構,會發現多了一個blog目錄,也就是我們剛剛創建的一個app,","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/90/90b5d6c0376906de823172aa19ce7d96.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"這裏需要說明下myblog是我們創建項目時的目錄,可以理解爲程序的入口,包含了配置文件、系統路由和web服務網關接口配置。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/51/516c18f3b53f469a9b7f8665ec1cfdea.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"關於新創建的app blog目錄下的文件簡介(簡單介紹):","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"migrations 遷移文件,主要存放從models遷移到數據庫的數據庫操作語句;","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"admin.py 註冊模型文件,註冊後的模型可以在admin管理後臺顯示;","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"apps.py 可以在裏面額外設置程序配置,並應用配置;","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"models.py 數據模型文件,數據庫設計主要在這裏,直接創建類對象即可;","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"tests.py 測試文件,主要用於app測試;","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"views.py 視圖文件,主要寫功能實現函數;","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"urls.py(需要自己創建) 路由文件,注意聲明路由關係。","attrs":{}}]}]}],"attrs":{}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"在settings中註冊新創建的app","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"創建好app,首先需要在settings中的","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"INSTALLED_APPS","attrs":{}}],"attrs":{}},{"type":"text","text":"中添加上新創建的app,","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"INSTALLED_APPS = [\n 'django.contrib.admin',\n ...\n 'blog', # 博客app\n]\n","attrs":{}}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"創建Article Models","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"進入到","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"blog/models.py","attrs":{}}],"attrs":{}},{"type":"text","text":",我們先創建一個","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"Article","attrs":{}}],"attrs":{}},{"type":"text","text":"模型,文章模型主要包括文章作者、文章標題、文章概要和文章正文這四個屬性,其他還應該添加屬性有:標題圖、文章標籤、瀏覽量等,方便入門學習,其餘屬性後期再添加:","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"python"},"content":[{"type":"text","text":"from django.db import models\nfrom django.contrib.auth.models import User\n\n# Create your models here.\nclass Article(models.Model):\n \"\"\"\n 創建一個基本的文章對象\n 包括:作者、標題、概要、正文\n 後期需要添加:標題圖、文章標籤、瀏覽量等\n \"\"\"\n # 文章作者,author 通過 models.ForeignKey 外鍵與系統自帶的 User 模型關聯在一起\n # 參數 on_delete 用於指定數據刪除的方式,避免兩個關聯表的數據不一致。\n author = models.ForeignKey(User, on_delete=models.CASCADE)\n # 文章標題\n title = models.CharField(max_length=255, null=False, blank=False)\n # 文章概要\n summary = models.CharField(max_length=255, null=False, blank=False)\n # 文章正文\n content = models.TextField()\n \n # 內部類 class Meta 用於給 model 定義元數據\n class Meta:\n # ordering 指定模型返回的數據的排列順序\n # '-title' 表明數據列表顯示按標題名稱降序排列\n ordering = ('-title',)\n # db_table 歉意映射到數據庫後的表名\n db_table = 'tb_article'\n # django後臺管理系統顯示名稱\n verbose_name = '文章管理'\n verbose_name_plural = verbose_name\n\n # 函數 __str__ 定義當調用對象的 str() 方法時的返回值內容\n # 它最常見的就是在Django管理後臺中做爲對象的顯示值。因此應該總是爲 __str__ 返回一個友好易讀的字符串\n def __str__(self):\n # 將文章標題返回,django後臺管理系統顯示條目名稱\n return str(self.author) + '-' + self.title\n","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"創建好模塊後,我們需要將Article模型註冊到","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"blog/admin.py","attrs":{}}],"attrs":{}},{"type":"text","text":"中,這樣纔會在後臺管理系統中顯示,","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"python"},"content":[{"type":"text","text":"from django.contrib import admin\nfrom blog.models import Article\n\n# Register your models here.\n# 註冊模型\nadmin.site.register(Article)\n","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"另外我們還需要在終端執行遷移命令,這樣系統就會自動根據Article模型中的屬性幫我們在數據庫中創建對應的表了。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"bash"},"content":[{"type":"text","text":"# 進入虛擬環境後執行以下命令\npython manage.py makemigrations\npython manage.py migrate\n","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/51/51ec53a723f9fed860ebacd3314b3980.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"完成上述設置後,我們完成了模型的創建和註冊,以及遷移映射到數據庫,接下來我們可以啓動程序後直接瀏覽器訪問","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"http://127.0.0.1:8000/admin","attrs":{}}],"attrs":{}},{"type":"text","text":",如果需要登錄,就直接用之前創建的admin賬號登錄即可,登錄之後我們可以看到我們新建的文章管理模塊。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/a9/a9cc48090cd668209510fbc9552d846e.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"點擊進入文章管理模塊,我們可以對文章進行增刪查改的操作,默認是空的,下面我已經新增了一篇。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/15/15f1fbb52cd872cffcb5c1490ffeae04.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我們可以點擊","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"增加 文章管理","attrs":{}}],"attrs":{}},{"type":"text","text":",就可以新建一篇文章了,我們選擇作者(和系統中的user是聯繫起來的,所以只能直接選擇),輸入文章標題、文章概要、文章內容,天后點擊保存即可,也可以點擊保存並增加另一個或者保存並繼續編輯。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/f6/f6c7345e99dba7e1755849db379556e7.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"保存後,會自動跳轉到文章管理頁面,顯示目前數據庫中所有的文章,以列表顯示。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/a3/a3cd7c25167da220100d6bf265a46ffc.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"隨便點擊一篇,就可以進入到對應文章的編輯界面了,可以對內容進行修改或者刪除等。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/f8/f86858705169ff4bef94cbe836aec91d.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"下期見,我是愛貓愛技術的老表,如果覺得本文對你學習有所幫助,歡迎點贊、評論、關注我!","attrs":{}}]}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章