1. 程式人生 > >Django單表的增刪改查

Django單表的增刪改查

1.Django下載
命名行
pip install django==1.11.16
pip install django==1.11.16 -i https://pypi.doubanio.com/simple/ 
pycharm
settings    直譯器   點+號    輸入Django  選擇版本   下載
2.建立專案
命令列
django-admin startproject 專案名
pycharm
file   new project   選擇Django 輸入專案名稱 選擇直譯器 輸入APP名稱  建立專案
3.啟動專案
命令列
切換到專案的根目錄下  manage.py
python manage.py runserver    # 127.0.01:8000
python manage.py runserver  80  # 127.0.01:80
python manage.py runserver   0.0.0.0:80  # 0.0.0.0:80
pycharm
修改配置
點三角啟動  dj 
4.配置檔案
資料庫 
靜態檔案 
​ STATIC_URL = '/static/'    # 別名
​ STATICFILES_DIRS = [
​ os.path.join(BASE_DIR,'static') ,
​ ]
模板 
​ TEMPLARTES 
​ DIRS  [os.path.join(BASE_DIR, 'templates')]
中介軟體
​ 註釋掉'django.middleware.csrf.CsrfViewMiddleware'
5.urls.py
​ 寫url和函式的對應關係
urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'login/', views.login),
    url(r'index/', views.index),
    url(r'test/', views.test),
​
]
6.函式
  引數: request  跟請求相關的內容
​ request.method  請求方式    GET POST  PUT 
​ request.POST      form表單提交POST請求傳遞的資料    {}    []  get
​ request.GET         URL地址上的引數    {}  
   返回值:
​    from django.shortcuts  import HttpReponse,render,redirect 
​    HttpReponse('字串')        返回一些字串  
​    render(request,'模板的檔名')      返回一個完整的HTML頁面
​    redirect('要跳轉的地址')       重定向    Location : 地址   
7.app
建立APP
命令列
python manage.py  startapp app名稱
pycharm
tools run manage.py task   startapp app名稱
註冊APP
​ INSTALLED_APPS = [
​ 'app01' 或者 'app01.apps.App01Config', 
]
8.form表單
action = ''   method ='post'    action 提交的地址  method 請求方式
所有的input標籤要有name屬性
一個input標籤的type='submit'  或者  button
9.get 和 post的區別
get
獲取一個頁面  
路徑/?name=alex&pwd=alexdsb
   request.GET 
post
提交資料
request.POST
10.Django使用mysql資料庫的流程:
建立一個mysql資料庫
在settings中配置DATABASES
​ ENGINE :  mysql ; 
​ NAME:   資料庫的名稱;
​ HOST:  IP   '127.0.0.1'   
​ PORT:  3306;
​ USER:  使用者名稱;
​ PASSWORD:  '密碼';
告訴Django使用pymysql連線資料庫
在與settings同級目錄下的__init__.py寫程式碼:

import pymysql
pymysql.install_as_MySQLdb()
. 寫表  在app下的models.py中寫類(繼承models.Model) 

class User(models.Model):   # 預設表名  app01_user
    name = models.CharField(max_length=32)   # varchar(32)
    pwd = models.CharField(max_length=32)
​
    def __str__(self):
        return self.name
執行資料庫遷移的命令
python manage.py  makemigrations  # 記錄models的變更記錄
python  manage.py  migrate        # 把變更記錄的操作同步到資料庫中
11.ORM
  物件和關係型資料庫的一個對映    同過操作物件的方式操作資料庫的內容
對應關係
​ 類        ___>     表
​ 物件    ___>    記錄  資料行
​ 屬性    ___>    欄位
ORM的功能:
操作資料表
操作記錄
具體的操作

from app01 import models 
# 獲取所有資料
models.User.objects.all()   # __>  QuerySet 物件列表 
# 獲取單個物件   獲取不到資料或者拿到多條資料就報錯
models.User.objects.get(name='alex',pwd='111')   # __> 物件
# 獲取滿足條件的所有物件  
models.User.objects.filter(name='alex',pwd='111')  # __>  QuerySet 物件列表 
單表的增刪改查
1.展示
model

class Publisher(models.Model):  # app01_publisher
    pid = models.AutoField(primary_key=True)  # pid 主鍵
    name = models.CharField(max_length=32)  # 出版社名稱
​
    def __str__(self):
        return self.name
設計URL

from app01 import views
# 展示出版社
url(r'^publisher_list/',views.publisher_list ),
寫函式

from app01 import models
# 展示出版社
def publisher_list(request):
    # 從資料庫獲取所有出版社物件
    all_publisher = models.Publisher.objects.all()
    return render(request, 'publisher_list.html', {'all_publisher': all_publisher})
寫模板

<table border="1">
    <tr>
        <th>ID</th>
        <th>名稱</th>
    </tr>
​
    {% for foo in all_publisher %}
        <tr>
        <td>{{ foo.pk }}</td>
        <td>{{ foo.name }}</td>
        </tr>
    {% endfor %}
</table>
模板語法
{{  變數 }}
迴圈   
​ {%  for i in  all_publisher %}
​ {{ forloop.counter }}   #  當前迴圈的測試 
​ {%  endfor %}
 
2.增加、刪除、編輯
見程式碼
3.新增ORM操作

# 新增資料
ret = models.Publisher.objects.create(name=new_name)   # ret 是物件
# 刪除資料
models.Publisher.objects.get(pk=pk).delete()
# 修改資料
obj_list = models.Publisher.objects.filter(pk=pk)
obj = obj_list[0]
obj.name = new_name  # 記憶體中修改資料
obj.save()  # 向資料庫提交,儲存到資料庫中