【Django:app、mysql 、簡單的表】——基於ubuntu
一、初識Django
已經在ubuntu下安裝好python,建立好virtualenv虛擬安裝環境和安裝好django。
1.在家目錄下建立專案
$ mkdir yuyu #在家目錄下建立一個新的目錄
$ pyenv activate env3.6.6 #啟用虛擬開發環境
$ pip freeze #檢視第三方庫(檢視是否安裝好django)
$ django-admin startproject yuyuhellp #建立一個django專案
$ tree #檢視專案的目錄結構
2.在pycharm下修改配置
在pycharm下,【File】—>【open】—>【找到manage.py的父目錄點選ok】—>【找到Settings下的Project:yuyuhellp】
—>【配置Project Interpreter】—>【選定env3.6.6】
配置settings.py:
- ALLOWED_HOSTS = [ ] 改為 ALLOWED_HOSTS = ['*'] 預設是本機訪問,修改後是允許任何人訪問
- LANGUAGE_CODE = 'en-us' 改為 LANGUAGE_CODE = 'zh-hans' 指定語言是漢語
- TIME_ZONE = 'UTC' 改為 TIME_ZONE = 'Asia/Shanghai' 指定時區亞洲上海
配置好後在Terminal裡輸入指令:
$ python manage.py runserver #在預設埠下執行
3.建立應用(app)
在Terminal裡輸入指令:
$ python manage.py startapp yuyuapp #建立新的應用
在Sttings.py中新增app:
(1)配置路由:提前新增hello檢視
(2)新增檢視
[1]第一種:
[2]第二種:
4.資料庫簡單模型
安裝mysql資料庫後,在虛擬環境下$ mysql -uroot -p登入資料庫,建立新的database
【點選pycharm右側欄databases】—>【選擇連線資料庫】:
(1)配置Sttings.py中DATABASES:
(2)編寫yuyuhellp下的__init__.py:
import pymysql
pymysql.install_as_MySQLdb()
(3)編寫yuyuapp下的models.py:
class User(models.Model):
username = models.CharField(max_length=20)
password = models.CharField(max_length=32)
在Terminal裡輸入指令進行資料遷移:
python manage.py makemigrations #生成資料庫遷移檔案
python manage.py migrate #生成資料庫表
重新整理後往表中新增資料:
(4)給app新增一個模板user.html:
在yuyuapp下新建一個Directory檔案名為【templates】,然後更改【Mark Directory as】為:【Template Folder】
在templates下新建user.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>列表</title>
</head>
<body>
<table>
<tr>
{% for i in data %}
<td>{{ i.username }}</td>
<td>{{ i.password }}</td>
{% endfor %}
</tr>
</table>
</body>
</html>
在views中引入from yuyuapp.models import User ,將表中資訊展示在html頁面中:
在urls.py中新增路徑:
最後在 Terminal裡輸入指令執行並在瀏覽器中查看錶中資料。
二、Django模型的應用(增刪改查)
在上述一中進行到4.3models.py,我們用新的方式新增資料。
三、表的關係(一對一,一對多,多對多)
唯一索引unique就是一對一,mysql外來鍵就是一對多。
建立一個user表:
建立一個article表:並新增外來鍵au_uid,user表是主表,article表是從表,關係是一對多
建立一個detail表:先新增外來鍵dtou_uid,user表是主表,detail表是從表;
接著設定 user表和detail表的關係為一對一:
用truncate清空detail表(與delete相比,truncate能清空自增id);
為detail表建立唯一索引ud_uid;
show index from detail \G 能檢視detail表的索引;
往detail表中新增資料,新增相同uid會報錯,即關係為一對一;
如何刪除主鍵中的一條記錄?(因為預設是 no action 或 restrict ,無法更新或刪除主表)
答:將所有從表中的外來鍵刪除,重新建立新的外來鍵設定方式cascade(從父表中刪除或更新對應的行,同時自動的刪除或更新子表中匹配的行)
建立一個goods表,再建立一個shopcard表(中間表),再為shopcard新增兩個外來鍵(uid,gid),就是多對多關係