标签:ssi 找不到 url info 匹配 dict index 点击 页面
接收请求,进行处理,返回应答。
总结:所以视图返回的内容一般为:render,redirect,JsonResponse,Httpresponse
视图函数定义在view.py中
def index(request): pass return HttpResponse("hello python")
注:参数中必须设置一个参数:request(request为HttpRequest的对象)需要返回一个HttpResponse的对象返回给浏览器显示的内容
参数还可能有:
urlpatterns = [ url(r‘‘, include("app名称.urls")) ]
urlpatterns = [ url(r‘^index$=$‘, 对应的匹配函数), # 这里一般做完全匹配 ]
url:http://127.0.0.1:8000/aindex/?a=3
# 项目中的urls.py url(r‘^a‘, include(‘booktest.urls‘)), # 应用中的urls.py配置 url(r‘^index/$‘, views.index),
如果想看到错误视图而不是调试信息,需要修改test3/setting.py文件的DEBUG项。
DEBUG = False # debug关闭 ALLOWED_HOSTS = [‘*‘, ] #表示允许所有的地址访问
进行url匹配时,把所需要的捕获的部分设置成一个正则表达式组,这样django框架就会自动把匹配成功后相应组的内容作为参数传递给视图函数。
1)位置参数
位置参数,参数名可以随意指定
url(r‘^delete_(\d)/$‘, views.show_add_cookie),
2)关键字参数:在位置参数的基础上给正则表达式组命名即可。
?P<组名>
注:关键字参数,视图参数名必须和正则表达式组名一致.
url(r‘^(delete(?P<bid>\d+))/$‘, views.show_arg),
注意:两种参数的方式不要混合使用,在一个正则表达式中只能使用一种参数方式。
服务器收到http协议请求后会根据请求信息创建HttpRequest对象,这个对象不需要我们创建,视图的第一个参数必须是HttpRequest的对象
请求格式:在请求地址结尾使用?,之后以“键=值”的格式拼接,多个键值对之间以&连接。
例:网址如下
http://www.itcast.cn/?a=10&b=20&c=python
其中的请求参数为:
a=10&b=20&c=python
总结:
使用form表单请求时,method方式为post则会发起post方式的请求,需要使用HttpRequest对象的POST属性接收参数,POST属性返回QueryDict类型的对象。
提交参数的方式:
总结:
HttpRequest对象的属性GET、POST都是QueryDict类型的对象与python字典不同,QueryDict类型的对象用来处理同一个键带有多个值的情况
方法get():
根据键获取值如果一个键同时拥有多个值将获取最后一个值
如果键不存在则返回None值,可以设置默认值进行后续处理
示例:
dict.get(‘键‘,默认值)
可简写为
dict[‘键‘]
方法getlist():
根据键获取值,值以列表返回,可以获取指定键的所有值
如果键不存在则返回空列表[],可以设置默认值进行后续处理
示例:
dict.getlist(‘键‘,默认值)
set_cookie(key, value=‘‘, max_age=None, expires=None)
在浏览器中使用javascript发起ajax请求时,返回json格式的数据,类JsonResponse继承自HttpResponse对象,被定义在django.http模块中,创建对象时接收字典作为参数。
JsonResponse对象的content-type为‘application/json‘。
示例
def get_data_by_ajax(request): """等待两秒发送请求""" time.sleep(2) return JsonResponse({"res": 1})
当一个逻辑处理完成后,不需要向客户端呈现数据,而是转回到其它页面,如添加成功、修改成功、删除成功后显示数据列表,而数据的列表视图已经开发完成,此时不需要重新编写列表的代码,而是转到这个视图就可以,此时就需要模拟一个用户请求的效果,从一个视图转到另外一个视图,就称为重定向。
示例
def demo_redirect(request): """页面重定向""" return redirect(‘/index/‘)
返回Json数据时需要将查询集进行序列化的操作
导入:
from django.core import serializers
使用serializers里面的方法
# 对查询集进行序列化
books = serializers.serialize(‘json‘, books) # "参数一 序列化的类型 参数二序列化的参数
# 将得到的值返回
JsonResponse({‘books‘: books})
# 传到模板文件当中是一个字符串 转成json对象
books = $.parseJSON(data.books)
# books为一个数组每个数组的每个元素为一个json对象
def get_book(request): """获取图书信息的视图""" books = BookInfo.objects.all() # 对查询集进行序列化 books = serializers.serialize(‘json‘, books) return JsonResponse({"books": books})
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="/static/js/jquery-1.12.4.min.js"></script> <script> $(function () { $.get(‘/get_book1/‘,function (data) { //将字符串转成json对象 books = $.parseJSON(data.books) content = ‘‘ //遍历其中的个对象获取属性值 content += ‘<tr>‘ $.each(books[0].fields, function (key, val) { content += ‘<td>‘+key+‘</td>‘ }) content += ‘</tr>‘ //便利打印出每个每个对象 $.each(books, function (index, data) { content += ‘<tr>‘ //遍历打印每个里面的对象fields的值 $.each(data.fields, function (key, val) { content += ‘<td>‘+val+‘</td>‘ }) content += ‘</tr>‘ }) $(‘#tab‘).append(content) }) }) </script> </head> <body> <table id="tab"></table> </body> </html>
Django中视图总结[urls匹配,HttpRequest对象,HttpResponse对象,对象序列化接受及案例]
标签:ssi 找不到 url info 匹配 dict index 点击 页面
原文地址:http://www.cnblogs.com/kayb/p/7255987.html