Model 操做html
1建立數據庫表python
定製表名:ajax
聯合惟一索引:sql
只是在聯合索引的基礎上加了一個unique =True數據庫
數據庫的查找:django
外鍵的正向查找:json
反向查找:app
反向查找指定字段數據:函數
指定反向查找的別名:性能
在刪除外鍵約束的表中的數據時,是否刪除另外一張表在使用此數據的數據:
判讀數據庫中的數據是否爲空:
like
between
統計,求和,最大值,最小值
若是你在取這些結果中沒有的其餘列的數據,Django 會再去數據庫操做,可是這樣性能就不行了。
本身指定鏈接那個數據庫:
等於:
性能相關:
正常的取會循環一次取一次ut裏的name 性能不行,因此須要加上 就會一次全取出來,能夠加參數來選擇取哪一個關聯表的數據
指定ut 鏈接表:
只獲取必須數據:
截取時間,生成想獲得的格式:
更細粒度的截取及時區轉換:
執行原生sql:
Form 驗證:
Form 功能:
建立一個完整的數據,爲靜態的數據,當須要修改時就須要修改此class:
從數據庫獲取數據,只是第一次會獲取最新數據,也就是說數據庫在更新後須要重啓程序:
實踐:
1 forms:
from django import forms from django.forms import fields from django.forms import widgets from app01 import models class UserInfoForm(forms.Form): user = fields.CharField( required=False, widget=widgets.Textarea(attrs={'class':'user'}) ) pwd = fields.CharField( max_length=12, widget=widgets.PasswordInput(attrs={'class':'pwd'}) ) #1 user_type = fields.ChoiceField( choices=[], widget=widgets.Select ) #2 user_type2 = fields.CharField( widget=widgets.Select(choices=[]) ) def __init__(self,*args,**kwargs): super(UserInfoForm,self).__init__(*args,**kwargs) self.fields['user_type'].choices = models.UserType.objects.values_list('id','name') self.fields['user_type2'].widget.choices = models.UserType.objects.values_list('id','name')
views:
from django.shortcuts import render # Create your views here. def inedex(request): from app01.forms import UserInfoForm obj = UserInfoForm() return render(request,'index.html',{'obj':obj})
html:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <p>{{ obj.user }}</p> <p>{{ obj.pwd }}</p> <p>{{ obj.user_type }}</p> <p>{{ obj.user_type2 }}</p> </body> </html>
傳入參數設置默認值(初始化操做,當打開頁面時,select框選擇的結果):
form 的更深層次驗證,自定義驗證:
錯誤信息捕獲:
總結:
序列化操做:
當一個數據不全是python 的數據類型,而是有其餘的數據類型,json 就不能序列化此數據,因此須要更細粒度的控制:
使用json 的 default 函數執行細粒度的操做:
給ajax 返回數據時要返回json 可是有一些數據是Django 特有的數據類型,因此須要自定義函數來處理這些數據: