Django的序列化&正则限定urls匹配

一般数据在传输的过程中都会对其进行序列化操作:

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>&nbsp;删除</a>
 7                   <a href="/student_edi/?id={{ foo.sid }}" class="btn btn-success"><i class="fa fa-pencil "></i>&nbsp;编辑</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
原文地址:https://www.cnblogs.com/wen-kang/p/9573172.html