一. 前言
瀏覽文章之前請確認(rèn)你的電腦已經(jīng)安裝好了python環(huán)境(包括pip),且已經(jīng)成功新建了一個可以正常運行的Django項目,若未新建,請查看我之前寫的一篇文章——如何在Pycharm中新建一個Django項目
二. 創(chuàng)建App
1. 方法一:
-
點擊pycharm下方的terminal導(dǎo)航欄。
點擊pycharm下方的terminal導(dǎo)航欄 -
在控制臺輸入python manage.py startapp app001,app001指的是app的名稱,可以自定義。這句命令行的含義是創(chuàng)建名稱為app001的App。
輸入python manage.py startapp app001命令 -
查看項目根目錄,檢查app001是否創(chuàng)建成功。
查看項目根目錄,檢查app001是否創(chuàng)建成功 在settings.py中注冊App,打開與項目名稱相同的目錄,找到其中的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é)者采用方法一,方法二需要一定的命令行知識,這不是整篇文章的重點。在這里不細(xì)說,大概講一下流程。
- 首先用cd命令行進入項目根目錄。
- 在根目錄下執(zhí)行與方法一相同的python manage.py startapp app001的創(chuàng)建App命令行操作。
- 檢查項目根目錄下的app001是否創(chuàng)建成功。
- 在settings.py中注冊App
三. 連接數(shù)據(jù)庫
利用pip命令安裝mysqlclient,這是python3用來連接MySQL的驅(qū)動庫,不安裝將無法連接。
-
下面是具體安裝步驟:
切換至pycharm的terminal導(dǎo)航欄,在命令行窗口輸入pip install mysqlclient,如下圖所示。
利用pip命令安裝mysqlclient -
進入項目根目錄下與你項目名稱相同的文件夾,找到settings.py,雙擊編輯,如下圖所示。
settings.py 找到DATABASES數(shù)據(jù)庫配置區(qū)域,如下所示。
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
- 因為要連接MySQL數(shù)據(jù)庫,因此需要修改數(shù)據(jù)庫配置,將其修改為如下所示。
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # mysql驅(qū)動
'NAME': 'test', # 數(shù)據(jù)庫名稱
'USER': 'root', # 登錄帳號
'PASSWORD': '123456', # 登錄密碼
'HOST': '127.0.0.1', # 主機地址
'PORT': '3306' # 端口
}
}
- 其中NAME為數(shù)據(jù)庫名稱,USER表示登錄賬戶名,PASSWORD為登錄密碼,HOST表示主機地址(127.0.0.1表示本機),PORT表示端口,默認(rèn)為3306。一般只需修改NAME,USER,PASSWORD,使其與你電腦上的環(huán)境一致,其他保持默認(rèn)即可。
四. 反向生成Model
-
在pycharm的terminal命令行窗口中輸入python manage.py inspectdb。
圖片.png 如上圖所示,db_table='user'表示的意思是這個實體類與名稱為user這個表相關(guān)聯(lián)。
python manage.py inspectdb命令行執(zhí)行的功能是把數(shù)據(jù)庫中的所有表反向生成實體類,一張表對應(yīng)一個實體類,你只需要將生成的實體類信息粘貼到對應(yīng)App目錄下的models.py即可。
-
將窗口中的整個class粘貼至app01目錄下的models.py中。(models.py用于存放實體類)
圖片.png
五. 從數(shù)據(jù)庫獲取數(shù)據(jù)
在app001下新建一個文件夾,名稱為templates,不能為其他名字,否則會報錯。這是Django的規(guī)定,app目錄下的temlates文件夾中用來存放模板文件(.html文件)。
在此templates文件夾下新建一個名稱為index.html的網(wǎng)頁(待會兒用來顯示數(shù)據(jù)庫返回的數(shù)據(jù)),如下圖所示。
進入app001目錄下的views.py文件,雙擊編輯
在views.py中定義一個函數(shù),名稱為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ù)庫user表中拿到所有的用戶信息,并將其賦值給user_list這個變量,等價于SQL語句
select * from user
render的可以理解成攜帶三個參數(shù)的跳轉(zhuǎn)。第一個參數(shù)是請求request,第二個參數(shù)是需要渲染的模板文件(跳轉(zhuǎn)到哪一個.html文件中),第三個參數(shù)是字典對象(用來存放渲染模板的數(shù)據(jù)),前兩個參數(shù)必須給定,不能省略,第三個參數(shù)可以省略(表示不攜帶數(shù)據(jù)的跳轉(zhuǎn))。
進入與項目根目錄同名文件夾下的urls.py,在urls.py中注冊該函數(shù)和請求路徑,如下所示。
from django.contrib import admin
from django.urls import path
from app001 import views
urlpatterns = [
path('admin/', admin.site.urls),
path('', views.get_user) # 添加路徑對應(yīng)函數(shù),''表示運行首頁訪問路徑
]
- path()函數(shù)有兩個參數(shù),第一個參數(shù)為請求路徑,指定為空字符串表示項目運行時首頁對應(yīng)的內(nèi)容,第二個參數(shù)表示調(diào)用函數(shù)。path('', views.get_user) 表示當(dāng)瀏覽器請求首頁,調(diào)用views.py中的get_user函數(shù),執(zhí)行g(shù)et_user函數(shù)中的動作。(注意 views.get_user的最后無需加(),否則會報錯)
六. 在網(wǎng)頁中顯示
- 編輯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對象中的user_name。若對django的模板不太了解,可以瀏覽我的博客——蒼茫誤此生博客,我在那里寫了一些關(guān)于django模板的基礎(chǔ)知識。
-
最后運行項目,點擊pycharm右上角的綠色箭頭。
2019-07-18 16-58-31屏幕截圖.png -
在瀏覽器地址欄中輸入http://127.0.0.1:8000/訪問即可,具體效果圖如下。
圖片.png
七. 最后
這是我第一次寫那么長的博客,還是有點累的。博客中如果有什么不足和錯誤,希望水友可以指出來。最后播個插曲,最近自己用django建了個網(wǎng)站,有興趣的水友可以幫忙點擊一下。網(wǎng)址是蒼茫誤此生博客,謝謝大家。轉(zhuǎn)載請注明出處,簡書-蒼茫誤此生-如何在Django中新建一個App,連接Mysql數(shù)據(jù)庫,并獲取數(shù)據(jù)。