1. 程式人生 > >django上課筆記1

django上課筆記1

.py 終端 name databases sta host pri creat local

一、Django目錄介紹

  django-admin startproject mysite # 創建名為mysite的項目
  cd mysite # 切換到該目錄下
  python manage.py starapp app01 # 創建app01業務線

  project
  - app01
  - admin Django自帶後臺管理相關配置
  - modal 寫類,根據類創建數據庫表
  - test 單元測試
  - views 業務處理
  - app02
  - app03

二、路由系統


  url和函數的對應關系

  a. /login/ -> def login # 一 一對應(靜態)

  b. /add-user/(\w+)/.html/ -> def add_user(request,a1) #加正則表達式 在視圖函數add_user中 a1接收url中(\w+)的內容(動態)

  c. /add-user/(?P<a1>\w+)/(?P<a2>\w+)/ -> def add_user(request,a1,a2) # 將匹配到的\w+內容賦給指定的a1和a2(不管順序)

  d. /add-user/(?P<a1>\w+)/(?P<a2>\w+)/ -> def add_user(request,*args,**kwargs) # 萬能匹配 位置參數和關鍵字參數


  PS:
  終止符:$
    ^edit$
  偽靜態
    url(r‘^edit/(\w+).html$‘, views.edit), # .html$結尾 sel權重比較高
  e. 路由分發
    在項目的 urls.py中分發
    url(r‘^app01/‘, include(‘app01.urls‘)),
    url(r‘^app02/‘, include(‘app02.urls‘)),

    app01 urls.py
    url(r‘^index.html$‘, views.index),
    app02 urls.py
    url(r‘^index.html$‘, views.index),


  f. /add-user/(\d+)/ -> def add_user(request,a1) name=n1

    根據名稱可以在 函數中 反向生成URL
    url(r‘^index/(\w+)‘, views.index,name=n1),
  1. 在Python代碼中
    from django.urls import reverse
    v = reverse(‘n1‘,args=(123,))
    print(v)

    url(r‘^index/(?P<a1>\w+)‘, views.index,name=n1),
    from django.urls import reverse
    v = reverse(‘n1‘,kwargs={‘a1‘:123})
    print(v)

  2.
    url(r‘^login/‘, views.login,name=‘m1‘)
    在HTML頁面中需要跳轉的頁面裏可以直接寫下面的代碼代替跳轉路徑
    {% url "m1" %}

    {% url "m1" i %} #傳值 空格加 i
三、ORM操作
  Http請求:
  url -> 視圖(模板+數據)
  步驟:
1.去配置文件裏更改默認設置
  DATABASES = {
  ‘default‘: {
  ‘ENGINE‘: ‘django.db.backends.mysql‘,
  ‘NAME‘:‘db3‘,
  ‘USER‘: ‘root‘,
  ‘PASSWORD‘: ‘‘,
  ‘HOST‘: ‘localhost‘,
  ‘PORT‘: ‘3306‘,
  }
  }

2.去__init__文件添加
  import pymysql
  pymysql.install_as_MySQLdb()

3.創建數據表
  在app01的models.py裏邊
  from django.db import models

  class UserGroup(models.Model):
  title = models.CharField(max_length=32) # 部門名稱

  class UserInfo(models.Model):
  uid = models.BigAutoField(primary_key=True) #自增和主鍵ID(也可以不設置)
  username = models.CharField(max_length=32) #用戶名
  passwd = models.CharField(max_length=64) #密碼
  #age = models.IntegerField(default=1) #年齡
  age = models.ImageField(null=True) 插入一列,可以為空值
  # ug_id
  ug = models.ForeignKey(‘UserGroup‘,null=True)#外鍵關聯部門的對應ID

去settings裏註冊app
  INSTALLED_APPS = [
  ‘django.contrib.admin‘,
  ‘django.contrib.auth‘,
  ‘django.contrib.contenttypes‘,
  ‘django.contrib.sessions‘,
  ‘django.contrib.messages‘,
  ‘django.contrib.staticfiles‘,

  ‘app01‘,
  ]

4.C:\Users\mu\PycharmProjects\day58mysite> 終端執行命令
  python manage.py makemigrations
  python manage.py migrate

5.數據行的增刪改查
  #增
  models.UserGroup.objects.create(title=‘銷售部‘) #創建數據行
  models.UserInfo.objects.create(username=‘root‘,passwd=‘123‘,age=‘20‘,ug_id=1)
  #查
  userinfo_list = models.UserInfo.objects.all() #獲取數據行,為Jqueryset對象
  userinfo_list = models.UserInfo.objects.filter(uid=1,username=‘alex‘) #filter過濾
  userinfo_list = models.UserInfo.objects.filter(uid__gt=1) # uid__gt=1 #意思為 uid大於1
  userinfo_list = models.UserInfo.objects.filter(uid__lt=1) # uid__lt=1 #意思為 uid小於1
  #刪
  userinfo_list = models.UserInfo.objects.filter(uid=1).delete() # 刪除數據行
  #改
  userinfo_list = models.UserInfo.objects.filter(uid=1).update(username=‘egon‘) # 先過慮找出對應數據行再update更新新值

ORM利用pymysql第三方工具連接數據庫
  默認:
    SQLlite
  MySQL:
    mysql -> MySQLDB(修改django默認連接mySQL方式)

django上課筆記1