Python 107th days -- Django basics 2, zero seven days django
1. Django request Lifecycle
Routing System-> attempted function (get template + Data => rendering)-> string returned to the user
2. Routing System
/Index/-> function or class. as_view ()
/Detail/(\ d +)-> function (parameter) or class. as_view () (parameter)
/Detail /(? P <nid> \ d +)-> function (parameter) or class. as_view () (parameter)
/Detail/-> include ("app01.urls ")
/Detail/name = 'a1'-> include ("app01.urls ")
-View: reverse
-Template: {% url "a1" %}
3. View
Chen Yibo:
FBV: Function
Def index (request, * args, ** kwargs ):
..
CBV: Class
Class Home (views. View ):
Def get (self, reqeust, * args, ** kwargs ):
..
Obtain the data in the user request:
Request. POST. get
Request. GET. get
Reqeust. FILES. get ()
# Checkbox,
... Getlist ()
Request. path_info
File object = reqeust. FILES. get ()
File object. name
File object. size
File object. chunks ()
# <Form special Settings> </form>
Return data to the user:
Render (request, "template file path", {'k1': [,], "k2": {'name': 'xxx', 'age ': 73 }})
Redirect ("URL ")
HttpResponse (string)
4. template Language
Render (request, "template file path", {'obj ': 1234, 'k1': [,], "k2": {'name ': 'sss', 'age': 73 }})
<Html> <body>
5. ORM
A. Create classes and fields
Class User (models. model): age = models. intergerFiled () # The integer does not need to be added with the length name = models. charField (max_length = 10) # character length Python manage. py makemigrations python manage. py migrate # settings. py register APP
B. Operations
Add
Models. user. objects. create (name = 'qianxiaohu ', age = 18) # method 1 dic = {'name': 'XX', 'age': 19} # method 2 models. user. objects. create (** dic) obj = models. user (name = 'qianxiaohu ', age = 18) # method 3 obj. save ()
Delete
models.User.objects.filter(id=1).delete()
Change
models.User.objects.filter(id__gt=1).update(name='alex',age=84)dic = {'name': 'xx', 'age': 19}models.User.objects.filter(id__gt=1).update(**dic)
Query
Models. user. objects. filter (id = 1, name = 'root') models. user. objects. filter (id _ gt = 1, name = 'root') # greater than models. user. objects. filter (id _ lt = 1) # smaller than models. user. objects. filter (id _ gte = 1) # greater than or equal to models. user. objects. filter (id _ lte = 1) # smaller than or equal to models. user. objects. filter (id = 1, name = 'root') # directly write dic = {'name': 'XX', 'Age _ gt ': 19} # define the dictionary models. user. objects. filter (** dic) v1 = models. business. objects. all () # QuerySet, internal elements are all objects # QuerySet, internal elements are all dictionaries v2 = models. business. objects. all (). values ('id', 'caption ') # QuerySet, internal elements are tuples v3 = models. business. objects. all (). values_list ('id', 'caption ') # obtain an object. If it does not exist, models is returned. business. objects. get (id = 1) object or None = models. business. objects. filter (id = 1 ). first ()
Foreign key:
V = models. Host. objects. filter (nid _ gt = 0)
V [0]. B. caption ----> Cross-table through.
Filter (B _ caption) # Use _ double underscores to query cross-Table Conditions
Foreign key:
Example:
Class UserType (models. model): caption = models. charField (max_length = 32) id caption #1, regular User #2, VIP User #3, tourist class User (models. model): age = models. intergerFiled () name = models. charField (max_length = 10) # character length # user_type_id = models. intergerFiled () # constraint, user_type = models. foreignKey ("UserType", to_field = 'id') # constraints, foreign key name age user_type_id # user 1 18 3 # represents user 1 as a tourist # user 2 18 2 # represents user 2 as a VIP user # user 3 18 2
Window relative positioning open relative positioning use parent relative positioning use start show absolute positioning
Position: fixed relative absolute
Ajax
$. Ajax ({
Url: '/host ',
Type: "POST ",
Data: {'k1': 123, 'k2': "root "},
Success: function (data ){
// Data is the string returned by the server.
Var obj = JSON. parse (data );
}
})
$. Get (url = 'XX', data = 'xxx ')
$. GetJson
$. Post
Suggestion: always let the server return a dictionary
Return HttpResponse (json. dumps (dictionary ))
Many to many:
Create multiple-to-multiple:
Method 1: Custom relational table class Host (models. model): nid = models. autoField (primary_key = True) hostname = models. charField (max_length = 32, db_index = True) ip = models. genericIPAddressField (protocol = "ipv4", db_index = True) port = models. integerField () B = models. foreignKey (to = "Business", to_field = 'id') #10 class Application (models. model): name = models. charField (max_length = 32) #2 class HostToApp (models. model): hobj = models. foreignKey (to = 'host', to_field = 'nid') aobj = models. foreignKey (to = 'application', to_field = 'id') operation associated tables are the same as other tables # HostToApp. objects. create (hobj_id = 1, aobj_id = 2) Method 2: automatically create a relational table class Host (models. model): nid = models. autoField (primary_key = True) hostname = models. charField (max_length = 32, db_index = True) ip = models. genericIPAddressField (protocol = "ipv4", db_index = True) port = models. integerField () B = models. foreignKey (to = "Business", to_field = 'id') #10 class Application (models. model): name = models. charField (max_length = 32) r = models. manyToManyField ("Host") # automatic association. You cannot directly operate on the third table (obj = Application) after creating or creating the table. objects. get (id = 1) # get a record object obj. name # operate obj in the third table. r. add (1) # The object corresponding to this record. r. add (2) obj. r. add (2, 3, 4) obj. r. add (* [1, 2, 4]) obj. r. remove (1) obj. r. remove (2, 4) obj. r. remove (* [1, 2, 3]) obj. r. clear () # clear all the Mappings of the current object obj. r. set ([3, 5, 7]) # modify the ing relationship of the current object # all related host objects "list" QuerySet obj. r. all () # obtain all Mappings of the current object