【Django學習筆記】3:在業務邏輯中使用內置的SQLite數據庫
注冊自定的app
在同名子目錄下的settings.py
中注冊這個自定的app:
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# 在這里注冊了自定的app
'lzhapp',
]
配置要使用的數據庫
在同名子目錄下的settings.py
中配置要使用的數據庫相關信息:
# Database
# https://docs.djangoproject.com/en/2.0/ref/settings/#databases
DATABASES = {
# 默認使用的數據庫
'default': {
# sqlite3的數據庫驅動
'ENGINE': 'django.db.backends.sqlite3',
# 使用sqlite3數據庫
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
編寫模型層
Django雖然是MTV框架,但其中的M和V與MVC框架基本是一致的,所以也需要模型層。模型層在同名子目錄下的models.py
中配置:
from django.db import models
# Create your models here.
# 模型層,用戶信息類,繼承Model類
class UserInfo(models.Model):
# 用戶名字段,類型是長度為32的char字符串
usr = models.CharField(max_length=32)
# 密碼字段,類型是長度為32的char字符串
pwd = models.CharField(max_length=32)
makemigrations
在對模型層文件進行配置以后,在PyCharm命令行使用:
python manage.py makemigrations
具體出現:
E:\WorkSpace\PyCharm\lzhDjango>python manage.py makemigrations
Migrations for 'lzhapp':
lzhapp\migrations\0001_initial.py
- Create model UserInfo
E:\WorkSpace\PyCharm\lzhDjango>
在同名子目錄下的migrations/
子目錄下,出現了一個文件:
這個文件的內容是:
# Generated by Django 2.0.5 on 2018-06-27 07:49
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='UserInfo',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('usr', models.CharField(max_length=32)),
('pwd', models.CharField(max_length=32)),
],
),
]
這條命令即是要生成這個文件,這個文件意在記錄對模型層的改動,但這些改動還沒有寫入數據庫。
migrate
繼續,在PyCharm命令行使用:
python manage.py migrate
具體出現:
E:\WorkSpace\PyCharm\lzhDjango>python manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, lzhapp, sessions
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying auth.0008_alter_user_username_max_length... OK
Applying auth.0009_alter_user_last_name_max_length... OK
Applying lzhapp.0001_initial... OK
Applying sessions.0001_initial... OK
E:\WorkSpace\PyCharm\lzhDjango>
此時,對模型層的改動已經依據上一步所生成的文件全部提交到數據庫中。
與數據庫交互的業務邏輯
Django自帶一個ORM框架,可以像Hibernate那樣操作數據庫。修改app目錄下的views.py
文件,在其中操作數據庫:
from django.shortcuts import render
# 導入要使用的模型層文件
from lzhapp import models
# 路由中指定要調用的函數,傳入一個用戶請求參數
def index(request):
# 從數據庫中讀取所有數據
inptDicLst = models.UserInfo.objects.all()
# 返回一個頁面,如返回自己這個頁面本身,第三個參數以字典方式提供數據對象
return render(request, 'index.html', {'lst': inptDicLst})
# 表單提交調用的函數
def gosub(request):
# 相當于Java的Servlet中的doPost情況
if request.method == 'POST':
# 獲取表單提交來的數據
username = request.POST.get('username', None)
password = request.POST.get('password', None)
# 在控制臺輸出表單的提交看一下
print(username, password)
# 將數據添加到數據庫,而不像之前那樣使用全局變量列表
models.UserInfo.objects.create(usr=username, pwd=password)
# 從數據庫中讀取所有數據
inptDicLst = models.UserInfo.objects.all()
# 返回一個頁面,如返回自己這個頁面本身,第三個參數以字典方式提供數據對象
return render(request, 'index.html', {'lst': inptDicLst})
測試運行
訪問http://localhost:8000/index/
:
提交一些數據:
關閉程序,再重新打開,然后訪問這個網址,仍然能看到剛剛提交的數據,這就是與不使用數據庫的區別。
智能推薦
Android學習(24)SQLite_數據庫的使用
Android學習(24)SQLite_數據庫的使用 SQLite數據庫介紹: 輕量級:SQLite是進程內的數據庫引擎,因此不存在數據庫的客戶端和服務器。使用SQLite一般只需要帶上它的一個動態庫,就可以享受它的全部功能。而且動態庫的尺寸也相當小。 獨立性:SQLite數據庫的核心引擎本身不依賴第三方軟件,使用它也不需要“安裝”,所以在使用的時候能夠省去不少麻煩 隔離性...
Android開發學習---SQLite 數據庫的使用
一.創建數據庫 1.創建MyDatabaseHelper 類繼承SQLiteOpenHelper幫助類,借助這個類就可以對數據庫進行創建和升級。 2.SQLiteOpenHelper 是一個抽象類,必須繼承才能使用。 3.SQLiteOpenHelper 中有兩個抽象方法,分別是onCreate()和 onUpgrade(),我們必須在自己的幫助類里面重寫這兩個方法,然后分別在這兩個方法中去實現創...
Django使用sqlite3數據庫(嘔心瀝血終于成功了)
首先,Django默認使用的就是sqlite3,而大多數人一上來就是使用MySQL,配置更加復雜,搞了一兩個小時也沒弄好(我太菜了,,,)對于小的網站項目,使用sqlite3足以。 首先,需要安裝sqlite3 如果使用的是VSCode,可以直接搜索sqlite插件安裝即可。 或者,到官方下載地址下載。SQLite3的下載地址:http://www.sqlite.org/download.html...
在Unity工程中使用SQLite數據庫
Chinar blog :www.chinar.xin 在Unity工程中使用SQLite數據庫 本文提供全流程,中文翻譯。 Chinar 的初衷是將一種簡單的生活方式帶給世人 使有限時間 具備無限可能 Chinar —— 心分享、心創新! 助力快速完成在 Unity 工程中使用SQLite數據庫 為初學者節省寶貴的時間,避免采坑! Chinar 教程效果: 文章目錄 1 ...
Android中使用LitePal操控SQLite數據庫
《第一行代碼》讀書手札 (一)什么是LitePal數據庫 LitePal數據庫是安卓的一個開源庫,我們在以后的開發中,將會遇到許許多多的開源庫,感謝開源社 區;因為開源社區的存在,一些我們需要的功能,不再需要我們從頭開始寫,我們就可以直接使用; (二)配置LitePal 由于LitePal是開源的第三方庫。但是,我們的JDK開發包中,并沒有內置這些第三方包,所有,我們 需要配置一下; 在Andro...
猜你喜歡
freemarker + ItextRender 根據模板生成PDF文件
1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...
電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!
Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...
requests實現全自動PPT模板
http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...