django 不用自带的mysql_python笔记二 django自带后台管理系统、模版渲染以及使用mysql数据库...
上一篇簡單的說了一下整體項(xiàng)目的搭建,但是這還不夠,一般完整的項(xiàng)目還要有很多東西,比如前端頁面有一些數(shù)據(jù)不是固定的,需要前后端交互,還需要后臺管理系統(tǒng),有可能我還不想用自帶的sqlite,想用mysql。這一篇講一下后臺管理、模版渲染、以及怎么用mysql數(shù)據(jù)庫,前后端交互我會在另外一篇文章,前后端分離再說。
一、django自帶的后臺管理系統(tǒng)
1、建表
后臺管理系統(tǒng)數(shù)據(jù)庫是一定要用的,python已經(jīng)幫我們做了很多東西,我們只需要調(diào)用就可以了,首先需要建表,打開myapp下models.py,添加以下內(nèi)容
image.png
接下來需要同步數(shù)據(jù)庫,上一篇已經(jīng)在搭建項(xiàng)目的時(shí)候說過了,這里重新說一下,只需要兩行命令。
image.png
這時(shí)候會發(fā)現(xiàn)根目錄下多了一個(gè)db.sqlite3的文件,打開是亂碼,沒錯(cuò)這就是剛剛新建的表。。。以文本的形式存儲在根目錄下。
還需要一步操作,打開myapp目錄下的admin.py,添加如下內(nèi)容,用后臺管理系統(tǒng)來管理剛創(chuàng)建的表。
image.png
2、后臺管理系統(tǒng)
django的后臺管理系統(tǒng)已經(jīng)很完善了,我們需要做的就是創(chuàng)建一個(gè)賬號,登錄,操作,沒有其他了,不需要自己寫任何東西。
創(chuàng)建賬號
image.png
請忽略那幾行提示,密碼我用的是六個(gè)1,多么的貼心,給了我三行提示。
至此賬號已經(jīng)創(chuàng)建好了,接下來就是打開后臺管理系統(tǒng)登錄。
相信在上一篇寫urls的時(shí)候都發(fā)現(xiàn)了有一個(gè)admin的默認(rèn)路徑,那個(gè)就是后臺管理系統(tǒng)。
python manage.py runserver
在瀏覽器地址欄輸入http://127.0.0.1:8000/admin
image.png
輸入剛創(chuàng)建好的賬號和密碼登錄
image.png
這就是剛創(chuàng)建的表,點(diǎn)擊Add我們來添加一組數(shù)據(jù)。
image.png
image.png
這就是django自帶的后臺管理系統(tǒng)。
二、模版渲染
1、直接將數(shù)據(jù)渲染到頁面
有了數(shù)據(jù)就要顯示在前端,這就要用到模版渲染,上一篇已經(jīng)說過怎么建模版,這里就不說了,主要說以下怎么渲染數(shù)據(jù)。
首先需要在渲染模版的時(shí)候把數(shù)據(jù)一起返回,打開myapp目錄下的views.py
image.png
templates目錄下的index.html需要修改如下
image.png
這里用到了django渲染模版的語法。
刷新瀏覽器
image.png
2、數(shù)據(jù)傳遞給js
有時(shí)候數(shù)據(jù)需要做一些處理再渲染到頁面,這就要先把數(shù)據(jù)給js,具體操作方法和直接渲染其實(shí)差不多。
在index.html里加上這句代碼
image.png
{{}}里邊的就是傳遞過來的數(shù)據(jù),和直接渲染是一樣的,如果只是一個(gè)字符串或者數(shù)字,可以直接用{{}}包裹,寫到body里。
打開開發(fā)者模式,刷新瀏覽器。
Uncaught SyntaxError: Unexpected token &
是不是報(bào)錯(cuò)了,這就對了。
看一下script標(biāo)簽里是什么情況
image.png
說好的數(shù)據(jù)呢。。。
我們需要在數(shù)據(jù)傳過來之前處理一下。
1、從數(shù)據(jù)庫拿出來的字典或者列表需要用json.dumps處理以下。
2、在模版上還要加safe過濾。
先在模版加safe
image.png
刷新一下,然后看一下script標(biāo)簽
image.png
尖括號這些東西已經(jīng)沒有了,接下來是json.dumps()。
image.png
刷新,還是報(bào)錯(cuò)。
是因?yàn)槲覀冊诖鏀?shù)據(jù)的時(shí)候有DateTimeField,對于這個(gè)dumps不能序列化,需要用到serializers和DjangoJSONEncoder,修改如下:
image.png
刷新
image.png
可以把數(shù)據(jù)處理一下只把需要的數(shù)據(jù)傳到j(luò)s,這里就不演示了。
三、mysql數(shù)據(jù)庫
1、查看當(dāng)前數(shù)據(jù)庫
django自帶的是sqlite數(shù)據(jù)庫,如果不想用,可以換成mysql、mongodb或者其他想用的,這里以mysql為例。
首先看一下我們的數(shù)據(jù)庫結(jié)構(gòu)。
在項(xiàng)目根目錄下輸入
sqlite3
進(jìn)入sqlite shell,sqlite的命令是.開頭的
.help
可以看見所有命令
我們想看數(shù)據(jù)結(jié)構(gòu),用.databases,然后用.tables
image.png
可以看見里邊有一些自帶的表還有我們創(chuàng)建的myapp_article,支持sql命令,想看什么自己看吧。
2、切換mysql數(shù)據(jù)庫
mysql安裝過程就不說了,直接開始。
首先新建一個(gè)數(shù)據(jù)庫test。
mysql
create database test;
show databases;
會發(fā)現(xiàn)又一個(gè)test的數(shù)據(jù)庫,切換到這個(gè)test
use test;
show tables;
里邊是空的沒有表
用mysql我們需要安裝一個(gè)pymysql
pip3 install pymysql
安裝之后打開myproject目錄下的_init_.py,添加兩行代碼
import pymysql
pymysql.install_as_MySQLdb()
接下來打開myproject目錄下的settings.py,修改如下
image.png
保存之后會發(fā)現(xiàn)命令行提示我們要同步數(shù)據(jù)庫
image.png
同步數(shù)據(jù)庫
python manage.py makemigrations
python manage.py migrate
然后開啟服務(wù),刷新127.0.0.1:8000發(fā)現(xiàn)數(shù)據(jù)沒有了,打開后臺管理用之前的賬戶密碼登錄也不能登錄,說明已經(jīng)切換到mysql,表都是空的,沒有數(shù)據(jù),我們看以下剛剛新建的test:
image.png
和之前我們看sqlite的表一樣,重復(fù)之前后臺管理有關(guān)的操作,發(fā)現(xiàn)沒有什么區(qū)別一樣可以操作數(shù)據(jù),切換完成。
總結(jié)
以上是生活随笔為你收集整理的django 不用自带的mysql_python笔记二 django自带后台管理系统、模版渲染以及使用mysql数据库...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pt1000温度对照表_温度传感器的常用
- 下一篇: imdb导mysql_keras如何导入