Content Directory
- Select Form Label Database operations
- Models Operation f/q
- Models many-to-many table operations
- Django Middleware
- Cache
- Signal
- Pagination
Select Form Label Supplement
In the previous section we can know that the form label has two functions, one to do the user submit data validation, one is to generate HTML tags
You can generate a select tag in the generated HTML tag, and select the option data that we can query in the database to read.
class usertype (models. Model): = models. Charfield (max_length=16)class UserInfo (models. Model): = models. Charfield (max_length=32) = models. Charfield (max_length=32) = models. ForeignKey ('usertype')#python3 manage.py Makemigrations#python3 Migrate
Models Generating Tables
fromApp01ImportModelsclassIndexform (forms. Form):#C = [ #(1, ' CEO '), #(2, ' COO ') # ]c = Models. UserType.objects.all (). Values_list ('ID','caption') user_type_id= Forms. Integerfield (widget=forms. Select (choices=c))def __init__(Self,*args, * *Kwargs):#Parent Class Construction method: 1, get all static field 2, fields = []Super (Indexform, self).__init__(*args, * *Kwargs)#print (self.fields[' user_type_id '].widget.choices)self.fields['user_type_id'].widget.choices = models. UserType.objects.all (). Values_list ('ID','caption')defIndex (Request):#For I in Range (Ten): #models. UserType.objects.create (caption= ' CE ' +str (i)) #C = models. UserType.objects.all (). Count () #print (c)form =Indexform ()returnRender (Request,'index.html', {'form': Form})
Views Code
<! DOCTYPE html>"en">" UTF-8"> <title></title> {{form.user_type_id}}</body>
front-end HTMLNote: After you have finished reading the database data, you start the Django state, and if you insert data into the database, the page does not change because C=models. UserType.objects.all (). Values_list (' id ', ' caption ') belongs to the static object, if you want to see the updated data, you can restart the next Django, if you do not want to restart the need to customize the __init__ construction method.
Models f/q operationF:temp = Salary+500models. UserInfo.objects.filter (). Update (SALARY=TEMP) update UserInfo set salary=salary+500 from django.db.models Import Fmodels.UserInfo.objects.filter (). Update (Salary=f (' salary ') +500) Q: Constructs the search condition 1, the parameter models. UserInfo.objects.filter (id=123,name= ' Alex ') 2, preach dictionary d = {' id ': 123, ' name ': ' Alex '}models. UserInfo.objects.filter (**d) <input name= ' id '/><input name= ' name '/> Get user input and construct into a dictionary: models. UserInfo.objects.filter (**c) 3, Q object Models.UserInfo.objects.filter (Q object) from django.db.models import q# q1 = Q () # Q1.connector = ' OR ' # q1.children.append ((' id ', 1)) # Q1.children.append ((' id ', 2)) # Q1.children.append ((' ID ', 3)) # Models. Tb1.objects.filter (q1) # con = q () # # q1 = q () # q1.connector = ' OR ' # q1.children.append ((' id ', 1)) # q1.children.append (' id ' , 2) # q1.children.append (' id ', 3) # # q2 = Q () # q2.connector = ' OR ' # q2.children.append (' status ', ' online ') # # Con.add (Q1, ' and ') # Con.add (Q2, ' and ') # # models. Tb1.objects.filter (Con)
Models many-to-many operations
-Create a. Mode one: Class B2G (models. Model): b_id = models. ForeignKey (' boy ') g_id = models. ForeignKey (' Girl ') class Boy (models. Model): Username = models. Charfield (MAX_LENGTH=16) class Girl (models. Model): name = models. Charfield (max_length=16) b. Mode two: Class Boy (Models. Model): Username = models. Charfield (max_length=16) # Girl_setclass Girl (models. Model): name = models. Charfield (max_length=16) b = models. Manytomanyfield (' Boy ')-action: add: Forward G1 = models. Girl.objects.get (id=1) G1.b.add (models. Boy.objects.get (id=1)) G1.b.add (1) bs = models. Boy.objects.all () G1.b.add (*bs) G1.b.add (*[1,2,3]) Reverse B1 = models. Boy.objects.get (id=1) b1.girl_set.add (1) b1.girl_set.add (models. Girl.objects.all ()) B1.girl_set.add (*[1,2,3,4]) ... Delete: G1 = models. Girl.objects.get (id=1) g1.b.clear () # Clears all data associated with Girl id=1 G1.b.remove (2) g1.b.remove (*[1,2]) query: G1 = models. Girl.objects.get (id=1) # Sqlg1.b.all () # Sqlg1.b.filter (). Count () B1 = models. Boy.objects.get (id=1) B1.girl_set.all () models. Girl.objects.all (). VALUES (' id ', ' name ', ' B__username ') models. Boy.objecTs.all (). VALUES (' id ', ' username ', ' girl__name ') Update: Orm:python operation database module: Mysqldbpymysql native sql# from django.db import connection# cursor = connection.cursor () # Cursor.execute ("" "SELECT * from TB WHERE name =%s" "", [' Lennon ']) # row = cursor . Fetchone ()
Django MiddlewareConfiguration file: Middleware_classes Write Class: process_requestprocess_viewprocess_exceptionprocess_response1.10 profile: MIDDLEWARE = Original version: If there is a return in the Process_request, all the process_response are executed once
CacheSignalPage outPython devops Development (20)----models operations, middleware, caching, signaling, paging