Django單表的增刪改查
阿新 • • 發佈:2018-12-04
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() # 向資料庫提交,儲存到資料庫中