Django(基础篇)
1.请求周期
url> 路由 > 函数或类 > 返回字符串或者模板语言?
Form表单提交:
提交 -> url > 函数或类中的方法
- ....
HttpResponse('....')
render(request,'index.html')
redirect('/index/')
用户 < < 返回字符串
(当接受到redirect时)自动发起另外一个请求
--> url .....
Ajax
$.ajax({
url: '/index/', data: {'k': 'v', 'list': [1,2,3,4], 'k3': JSON.stringfy({'k1': 'v'}))}, $(form对象).serilize() type: 'POST', #请求方式 dataType: 'JSON': #数据格式 traditional: true, #若$(form对象).serilize(),则必须使用traditional: true, success:function(d){ location.reload() # 刷新 location.href = "某个地址" # 跳转 } }) 提交 -> url -> 函数或类中的方法 HttpResponse('{}') 指定发送 发什么是什么 render(request, 'index.html', {'name': 'v1'}) 受到数据 进行渲染 最后变成字符串发送给后台 <h1>{{ name }}</h1> --> <h1>v1</h1> XXXXXXX redirect... 用户 <<<<< 字符串
2.路由系统URL
(1)通过URL传递默认参数
#urls.py from app_1 import views urlpatterns = [ path('index/', views.index,{'name':'root'}), #默认参数 ]
接收URL传递的默认参数
#views.py def index(request,name): #一定要在request后面添加形参name print(name) return HttpResponse('OK')
(2).命名空间
project.urls.py
from django.contrib import admin from django.urls import path,include from app_1 import views urlpatterns = [ path('a/', include('app_1.urls', namespace='author')), ]
app.urls.py
from django.contrib import admin from django.urls import path,include from app_1 import views app_name='app_01' #一定要添加app_name urlpatterns = [ #path('admin/', admin.site.urls), #path('index/', views.index,{'name':'root'}), path('index/', views.index,name='index'), ]
根据name生成url
#views.py from django.shortcuts import render,HttpResponse from django.urls import reverse def index(request): v=reverse('author:index') #通过name反查url地址 print(v) return HttpResponse('OK')
django中的路由系统和其他语言的框架有所不同,在django中每一个请求的url都要有一条路由映射,这样才能将请求交给对一个的view中的函数去处理。其他大部分的Web框架则是对一类的url请求做一条路由映射,从而是路由系统变得简洁。