Django筆記02

前端頁面兩種引入外部資源的方式css

  CDN 內容分發網絡html

  加載本地文件前端

html文件約定俗成放在templates文件夾下python

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')]
        ,
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

靜態文件約定俗成放在static文件下mysql

通常狀況下static文件夾下建議分紅css,js等相關文件夾實現分層sql

django靜態文件配置
STATIC_URL = '/static/'
# 靜態文件路徑配置
STATICFILES_DIRS = [
    os.path.join(BASE_DIR,'static'),
    os.path.join(BASE_DIR,'static1'),
    os.path.join(BASE_DIR,'static2'),
]

form表單兩種提交方式數據庫

  1 input type=submitdjango

  2 button按鈕網絡

  form表單默認是get請求,能夠經過method參數指定提交方式函數

  參數攜帶方式 http://127.0.0.1:8000/login/?username=jason&password=123

  action三種指定數據提交路徑方式

    1 全路徑  http://127.0.0.1:8000/login/

    2 後綴  /login/

    3 不寫  不寫默認提交到當前路徑

  一般狀況下視圖函數都是get請求

get請求和post請求

  django獲取前端請求方式 request.method

  獲取get請求提交的數據

    request.GET 攜帶了前端全部get請求的數據

    username = request.GET.get('username')

    取值遵循字典取值,雖然它的value是列表可是默認取最後一個元素

    能夠經過getlist()獲取到列表

  獲取post請求提交的數據

    request.POST 攜帶了全部post請求數據

    username = requetst.POST.get('username')   

    取值遵循字典取值,雖然它的value是列表可是默認取最後一個元素

    能夠經過getlist()獲取到列表

ORM:對象關係映射

  一個類  >>>  數據庫的一張表

  類的對象  >>>  數據庫的一條記錄

  對象點數據(user_obj.name)  >>>  數據庫某條記錄的某個字段值

  優勢:不會sql也能夠進行開發,大大提升開發效率

  缺點:可能sql語句執行效率不高

  django鏈接mysql數據庫

    1 配置文件:變量名必須所有大寫 

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'test007',
        'USER':'root',
        'PASSWORD':'123321',
        'HOST':'127.0.0.1',
        'PORT':3306
    }
}

    2 django orm不會自動建立數據庫,須要手動建立

     django orm會自動建立表,字段

數據庫遷移命令(重點)

  python manage.py makemigrations 記錄數據庫更改操做

  python manage.py migrate 操做數據庫

orm查詢user表全部數據

  models.User.objects.all()

orm查詢user表的某條數據

  user_queryset = models.User.objects.filter(name=name,password=password)

  只有queryset對象才能點query獲取當前對象所對應的sql語句

  能夠經過索引的方式從queryset對象中取出數據對象

  queryset支持正數索引取值,可是不推薦使用,orm推薦使用first()

  user_queryset = models.User.objects.filter(name=name,password=password).first()

  只有數據對象才能點出數據

表字段的增刪改

  只要修改了models.py中的代碼,就必須從新執行數據庫遷移命令

  表字段新增:對於已經有數據的表,新增字段的時候要設置默認值,或者指定該字段能夠爲空

  表字段刪除:直接註釋掉models.py中的代碼

  表字段修改:直接修改models.py中的代碼

表的增刪改查

  models.User.objects.all() 獲取user表中的全部數據

  models.User.objects.filter(id=delete_id).delete() 刪除user表中查出的全部數據

  models.User.objects.create(name=username,password=password,addr=addr) 在user表中新增一條數據  

  user_obj = models.User(**request.POST)
  user_obj.save() 新增數據

  models.User.objects.filter(id=id2).update(name=username,password=password,addr=addr)更新數據

  edit_obj = models.User.objects.filter(id=id2).first()
  edit_obj.name = username
  edit_obj.password = password
  edit_obj.addr = addr
  edit_obj.save()  更新數據的另外一種方式

只要queryset對象就能夠連續點出對於的方法

查表時能夠用get獲取,可是不推薦

django請求聲明週期

 

圖書管理系統表設計
  書籍 >>> 出版社 一對多(注意:外鍵說法描述只有一對多,沒有多對一)
  做者 >>> 書籍 多對多
  出版社

  publish = models.ForeignKey(to='Publish')  # 關聯publish表 關聯字段默認就是主鍵id

  authors = models.ManyToManyField(to='Author')  # 自動幫你建立書籍與做者的關係表  不會在當前表裏面建立字段

相關文章
相關標籤/搜索