python自動化運維學習第十六天--models基本使用和基本命令
modules基本使用
models是資料庫的api,可以對資料庫進行增刪改查等操作。
學習階段使用的資料庫是sqllite,使用其他資料庫可以修改settings.py檔案中的配置項。使用資料庫前需要在資料庫中提前建立一個庫,表可以通過models建立。
使用models.py檔案建立一個表
from django.db import models
class UserInfo(modules.model): #建立一個類,類名會作為表名的一部分
username = models.CharField(max_length=32,null=True) #建立一個表中的欄位,欄位名為username,char型別,長度32,可以為空
password = models.CharField(max_length=32,null=True) #建立一個表中的欄位,欄位名為password,char型別,長度32,可以為空
然後在pycharm下邊的terminal介面輸入如下命令
>>>python manage.py makemigrations #執行的命令 Migrations for 'demo': #輸出的內容 demo\migrations\0001_initial.py - Create model UserInfo
再執行
python manage.py migrate
建立了一個有3個欄位的表,其中第一個欄位名為id,是預設建立的自增欄位。
執行後會在左側專案下建立一個db.sqllite3的檔案,把它拖到右側的database下
這樣就能看到建立的資料庫表了
其中demo_userinfo是建立的表,表名為application name加下劃線加建立的類名組成。其他都是django預設建立的表。
修改前邊寫的views.py檔案
from django.shortcuts import render,HttpResponse,redirect
from demo import models #匯入剛才寫的demo包下的models模組
def login(request):
a = ['biaoti','geshi',0,1]
if request.method=='GET':
obj_li = models.UserInfo.objects.all() #obj_li為QuerySetList,後邊的all表示表中所有資料,每個QuerySet就是資料庫中一條資料的物件
#obj_li = models.UserInfo.objects.filter(username='test') #根據條件查詢,相當於sql中的where,obj_li拿到的資料都是QuerySetList
#for obj in obj_li:
# print("username: ", obj.username)
# print("password: ", obj.password)
return render(request, 'login.html', locals())
修改login.html檔案
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>{{ a.0 }}</h1> <!--讀取views.py檔案中的a變數第0個值,即列表切片的第0個值-->
{% for item in obj_li %} <!--迴圈讀取views.py檔案中obj_li物件-->
<div>
<span>{{ item.username }}</span> <!--讀取每個物件的username欄位值-->
<span>{{ item.password }}</span> <!--讀取每個物件的password欄位值-->
</div>
{% endfor %}
</body>
</html>
在資料庫表中新增一些資料,啟動django,訪問http://127.0.0.1:8000/login/ 就是出現如下內容
基本命令
Django基本命令,在終端執行,也可以在pycharm的terminal中執行
-
建立一個django project
django-admin.py startproject mysite
-
在mysite目錄下建立應用,比如blog:
python manage.py startapp blog
在專案下新增應用時就可以執行這條命令 -
啟動django專案
python manage.py runserver ip:port
ip和port可以不寫,預設是127.0.0.1:8000 -
同步更改資料庫表或欄位
python manage.py syncdb
注意:Django 1.7.1 及以上的版本需要用以下命令python manage.py makemigrations python manage.py migrate
這種方法可以建立表,當你在models.py中新增了類時,執行它就可以自動在資料庫中建立表了,不用手動建立。
-
清空資料庫
python manage.py flush
此命令會詢問是 yes 還是 no, 選擇 yes 會把資料全部清空掉,只留下空表。 -
建立超級管理員
python manage.py createsuperuser
# 按照提示輸入使用者名稱和對應的密碼就好了郵箱可以留空,使用者名稱和密碼必填
# 修改使用者密碼可以用:
python manage.py changepassword username
- Django 專案環境終端
python manage.py shell
一般除錯時使用 - Django 專案環境終端
python manage.py dbshell
同上條 - 更多命令
python manage.py
- static配置
#STATIC檔案可以配置STATICFILES_DIRS,指定額外的靜態檔案儲存位置。
# STATIC_URL的含義與MEDIA_URL類似。
# ----------------------------------------------------------------------------
#注意1:
#為了後端的更改不會影響前端的引入,避免造成前端大量修改
STATIC_URL = '/static/' #引用名
STATICFILES_DIRS = (
os.path.join(BASE_DIR,"statics") #實際名 ,即實際資料夾的名字
)
#django對引用名和實際名進行對映,引用時,只能按照引用名來,不能按實際名去找
#<script src="/statics/jquery-3.1.1.js"></script>
#------error-----不能直接用,必須用STATIC_URL = '/static/':
#<script src="/static/jquery-3.1.1.js"></script>
#注意2(statics資料夾寫在不同的app下,靜態檔案的呼叫):
STATIC_URL = '/static/'
STATICFILES_DIRS=(
('hello',os.path.join(BASE_DIR,"app01","statics")) ,
)
#<script src="/static/hello/jquery-1.8.2.min.js"></script>
#注意3:
STATIC_URL = '/static/'
{% load staticfiles %}
# <script src={% static "jquery-1.8.2.min.js" %}></script>