一. 前言
瀏覽文章之前請(qǐng)確認(rèn)你的電腦已經(jīng)安裝好了python環(huán)境(包括pip)艰毒,且已經(jīng)成功新建了一個(gè)可以正常運(yùn)行的Django項(xiàng)目筐高,若未新建,請(qǐng)查看我之前寫(xiě)的一篇文章——如何在Pycharm中新建一個(gè)Django項(xiàng)目
二. 創(chuàng)建App
1. 方法一:
-
點(diǎn)擊pycharm下方的terminal導(dǎo)航欄丑瞧。
-
在控制臺(tái)輸入python manage.py startapp app001柑土,app001指的是app的名稱(chēng),可以自定義绊汹。這句命令行的含義是創(chuàng)建名稱(chēng)為app001的App冰单。
-
查看項(xiàng)目根目錄,檢查app001是否創(chuàng)建成功灸促。
在settings.py中注冊(cè)App,打開(kāi)與項(xiàng)目名稱(chēng)相同的目錄浴栽,找到其中的settings.py文件荒叼,雙擊編輯,找到App配置區(qū)域典鸡,如下所示被廓。
INSTALLED_APPS = [
'simpleui',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
- 我們需要將剛剛創(chuàng)建的App加入到配置文件中,其他配置保持默認(rèn)即可萝玷,如下所示嫁乘。
INSTALLED_APPS = [
'simpleui',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app001', # 添加的App
]
2. 方法二:
- 建議初學(xué)者采用方法一,方法二需要一定的命令行知識(shí)球碉,這不是整篇文章的重點(diǎn)蜓斧。在這里不細(xì)說(shuō),大概講一下流程睁冬。
- 首先用cd命令行進(jìn)入項(xiàng)目根目錄挎春。
- 在根目錄下執(zhí)行與方法一相同的python manage.py startapp app001的創(chuàng)建App命令行操作。
- 檢查項(xiàng)目根目錄下的app001是否創(chuàng)建成功豆拨。
- 在settings.py中注冊(cè)App
三. 連接數(shù)據(jù)庫(kù)
利用pip命令安裝mysqlclient直奋,這是python3用來(lái)連接MySQL的驅(qū)動(dòng)庫(kù),不安裝將無(wú)法連接施禾。
-
下面是具體安裝步驟:
切換至pycharm的terminal導(dǎo)航欄脚线,在命令行窗口輸入pip install mysqlclient,如下圖所示弥搞。
-
進(jìn)入項(xiàng)目根目錄下與你項(xiàng)目名稱(chēng)相同的文件夾邮绿,找到settings.py,雙擊編輯拓巧,如下圖所示斯碌。
找到DATABASES數(shù)據(jù)庫(kù)配置區(qū)域,如下所示肛度。
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
- 因?yàn)橐B接MySQL數(shù)據(jù)庫(kù)傻唾,因此需要修改數(shù)據(jù)庫(kù)配置,將其修改為如下所示承耿。
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # mysql驅(qū)動(dòng)
'NAME': 'test', # 數(shù)據(jù)庫(kù)名稱(chēng)
'USER': 'root', # 登錄帳號(hào)
'PASSWORD': '123456', # 登錄密碼
'HOST': '127.0.0.1', # 主機(jī)地址
'PORT': '3306' # 端口
}
}
- 其中NAME為數(shù)據(jù)庫(kù)名稱(chēng)冠骄,USER表示登錄賬戶(hù)名,PASSWORD為登錄密碼加袋,HOST表示主機(jī)地址(127.0.0.1表示本機(jī))凛辣,PORT表示端口,默認(rèn)為3306职烧。一般只需修改NAME扁誓,USER防泵,PASSWORD,使其與你電腦上的環(huán)境一致蝗敢,其他保持默認(rèn)即可捷泞。
四. 反向生成Model
-
在pycharm的terminal命令行窗口中輸入python manage.py inspectdb。
如上圖所示寿谴,db_table='user'表示的意思是這個(gè)實(shí)體類(lèi)與名稱(chēng)為user這個(gè)表相關(guān)聯(lián)锁右。
python manage.py inspectdb命令行執(zhí)行的功能是把數(shù)據(jù)庫(kù)中的所有表反向生成實(shí)體類(lèi),一張表對(duì)應(yīng)一個(gè)實(shí)體類(lèi)讶泰,你只需要將生成的實(shí)體類(lèi)信息粘貼到對(duì)應(yīng)App目錄下的models.py即可咏瑟。
-
將窗口中的整個(gè)class粘貼至app01目錄下的models.py中牧抵。(models.py用于存放實(shí)體類(lèi))
五. 從數(shù)據(jù)庫(kù)獲取數(shù)據(jù)
在app001下新建一個(gè)文件夾狞山,名稱(chēng)為templates,不能為其他名字拉岁,否則會(huì)報(bào)錯(cuò)惠桃。這是Django的規(guī)定浦夷,app目錄下的temlates文件夾中用來(lái)存放模板文件(.html文件)。
在此templates文件夾下新建一個(gè)名稱(chēng)為index.html的網(wǎng)頁(yè)(待會(huì)兒用來(lái)顯示數(shù)據(jù)庫(kù)返回的數(shù)據(jù))辜王,如下圖所示劈狐。
進(jìn)入app001目錄下的views.py文件,雙擊編輯
在views.py中定義一個(gè)函數(shù)呐馆,名稱(chēng)為get_user肥缔,如下所示。
from django.shortcuts import render
from app001.models import User
def get_user(request):
user_list = User.objects.all()
return render(request, 'index.html', {'user_list': user_list})
- user_list = User.objects.all()表示從數(shù)據(jù)庫(kù)user表中拿到所有的用戶(hù)信息汹来,并將其賦值給user_list這個(gè)變量续膳,等價(jià)于SQL語(yǔ)句
select * from user
render的可以理解成攜帶三個(gè)參數(shù)的跳轉(zhuǎn)。第一個(gè)參數(shù)是請(qǐng)求request收班,第二個(gè)參數(shù)是需要渲染的模板文件(跳轉(zhuǎn)到哪一個(gè).html文件中)坟岔,第三個(gè)參數(shù)是字典對(duì)象(用來(lái)存放渲染模板的數(shù)據(jù)),前兩個(gè)參數(shù)必須給定摔桦,不能省略社付,第三個(gè)參數(shù)可以省略(表示不攜帶數(shù)據(jù)的跳轉(zhuǎn))。
進(jìn)入與項(xiàng)目根目錄同名文件夾下的urls.py邻耕,在urls.py中注冊(cè)該函數(shù)和請(qǐng)求路徑鸥咖,如下所示。
from django.contrib import admin
from django.urls import path
from app001 import views
urlpatterns = [
path('admin/', admin.site.urls),
path('', views.get_user) # 添加路徑對(duì)應(yīng)函數(shù)兄世,''表示運(yùn)行首頁(yè)訪問(wèn)路徑
]
- path()函數(shù)有兩個(gè)參數(shù)啼辣,第一個(gè)參數(shù)為請(qǐng)求路徑,指定為空字符串表示項(xiàng)目運(yùn)行時(shí)首頁(yè)對(duì)應(yīng)的內(nèi)容御滩,第二個(gè)參數(shù)表示調(diào)用函數(shù)鸥拧。path('', views.get_user) 表示當(dāng)瀏覽器請(qǐng)求首頁(yè)党远,調(diào)用views.py中的get_user函數(shù),執(zhí)行g(shù)et_user函數(shù)中的動(dòng)作住涉。(注意 views.get_user的最后無(wú)需加()麸锉,否則會(huì)報(bào)錯(cuò))
六. 在網(wǎng)頁(yè)中顯示
- 編輯app001中templates目錄下的index.html文件。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{% for user in user_list %}
<h1>{{ user.user_name }}</h1>
{% endfor %}
</body>
</html>
{% for user in user_list %} {% endfor %} 表示循環(huán)作用域舆声,遍歷user_list列表,user表示每次循環(huán)的變量柳爽。 {{ user.user_name }} 表示獲取user對(duì)象中的user_name媳握。若對(duì)django的模板不太了解,可以瀏覽我的博客——蒼茫誤此生博客磷脯,我在那里寫(xiě)了一些關(guān)于django模板的基礎(chǔ)知識(shí)蛾找。
-
最后運(yùn)行項(xiàng)目,點(diǎn)擊pycharm右上角的綠色箭頭赵誓。
-
在瀏覽器地址欄中輸入http://127.0.0.1:8000/訪問(wèn)即可打毛,具體效果圖如下。
七. 最后
這是我第一次寫(xiě)那么長(zhǎng)的博客俩功,還是有點(diǎn)累的幻枉。博客中如果有什么不足和錯(cuò)誤,希望水友可以指出來(lái)诡蜓。最后播個(gè)插曲熬甫,最近自己用django建了個(gè)網(wǎng)站,有興趣的水友可以幫忙點(diǎn)擊一下蔓罚。網(wǎng)址是蒼茫誤此生博客椿肩,謝謝大家。轉(zhuǎn)載請(qǐng)注明出處豺谈,簡(jiǎn)書(shū)-蒼茫誤此生-如何在Django中新建一個(gè)App郑象,連接Mysql數(shù)據(jù)庫(kù),并獲取數(shù)據(jù)茬末。