一般数据在传输的过程中都会对其进行序列化操作:
1>手动json
1 import json
2 data = {'name': 'kevin', 'age': 18}
3 data2 = [11, 22, 33, 44]
4 d=json.dumps(data)
5 return HttpResponse(d)
2>直接调用Django里面自带的JsonResponse
1 from django.http import JsonResponse
2 data={'name':'kevin','age':18}
3 data2=[11,22,33,44]
4 return JsonResponse(data,safe=False)
需要注意的问题是:Django里面的json规范化的格式是字典,传入其他类型数据会报错,如果要传入,把安全性检测safe取消
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
通过正则来限定匹配对应关系:
1 url(r'^student_del/([0-9]+)/$', views.student_del),
views的函数需要有一个参数来接收传过来的参数:
1 def student_del(request,s_id):
2 print(request)
3 print(s_id)
4 models.Student.objects.all().get(sid=s_id).delete()
5 return redirect('/student_list/')
同样的HTML页面则必须与之对应:
1 {% for foo in student %}
2 <tr>
3 <td>{{ foo.sid }}</td>
4 <td>{{ foo.sname }}</td>
5 <td>{{ foo.grade.gname }}</td>
6 <td><a href="/student_del/{{ foo.sid }}/" class="btn btn-danger"><i class="fa fa-trash-o "></i> 删除</a>
7 <a href="/student_edi/?id={{ foo.sid }}" class="btn btn-success"><i class="fa fa-pencil "></i> 编辑</a>
8 </td>
9 </tr>
10 {% endfor %}
若是使用正则分组匹配,则需要按分组关键字取值:
对应关系:
1 url(r'about/(?P<year>[0-9]{2,4})/(?P<name>[a-zA-Z]+)/$',views.about),
具体的取值方法:
1 def about(request,year,name):
2 print(year,name)
3 return render(request,'test1.html')
那么此时如果在地址栏输入类似的地址:http://127.0.0.1:8000/about/2018/kevin/
则 year=2018 ,name=kevin
如果希望不带参数默认访问的是第一页,传参数按参数值访问,那么可以按下面操作:
1 url(r'update/$',views.page),
2 url(r'update/page/(?P<num>[0-9]+)/$',views.page),
函数:
1 def page(request,num='1'):
2 pass