第56天:django学习(五)
HttpResponse对象
????????响应对象主要有三种形式:
HttpResponse()、render()、redirect()
????????HttpResponse()括号内直接跟一个具体的字符串作为响应体,比较直接很简单,所以这里主要介绍后面两种形式。
render()
????????render(request, template_name[, context])` ?`结合一个给定的模板和一个给定的上下文字典,并返回一个渲染后的 HttpResponse 对象。
????????参数:
? ? ?????????request: 用于生成响应的请求对象。? ? ?????????template_name:要使用的模板的完整名称,可选的参数
? ? ?????????context:添加到模板上下文的一个字典。默认是一个空字典。如果字典中的某个值是可调用的,视图将在渲染模板之前调用它。
????????render方法就是将一个模板页面中的模板语法进行渲染,最终渲染成一个html页面作为响应体。
def render(request, template_name, context=None, content_type=None, status=None, using=None):
content = loader.render_to_string(template_name, context, request, using=using)
return HttpResponse(content, content_type, status)
redirect()
def my_view(request):
...
return redirect('/some/url/')
? ? ? ? 也可以是一个完整的URL
def my_view(request):
...
return redirect('/some/url/')
JsonResponse类
????????json作用:
????????跨语言传输-------序列化:json.dumps--------反序列化:json.loads
?????????向前端返回一个json格式字符串的两种方式
????????方式一:
import json
data = {'name': 'kevin', 'age': 22}
def index(request):
return HttpResponse(json.dumps(data))
? ? ? ? 方式二:
from django.http import JsonResponse
def index(request):
user_dic = {'name': 'kevin', 'age': 22}
return JsonResponse(user_dict, json_dumps_params={'ensure_ascii': False})
CBV和FBV
????????CBV和FBV:
FBV: function based view # 写的都是函数
CBV: class based view # 写的都是类
?????????视图函数的写法(CBV)
class MyLogin(View):
def get(self, request):
print('get。。。')
return HttpResponse("get")
def post(self, request):
return HttpResponse("hello postman!!!")
????????路由文件的写法(CBV):
url(r'^login/', views.MyLogin.as_view()), # 注意:as_view后要加括号
??简单文件上传
?????????表单上传数据需要满足的条件
????????1.请求方式必须是post
????????2.enctype="multipart/form-data"
????????模板中的写法
<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="myfile">
<input type="submit">
</form>
????????视图函数写法
def index(request):
user_dict = {'name': 'kevin', 'age': 22}
file_obj = request.FILES.get('myfile')
file_name = file_obj.name
with open(file_name, 'wb') as f:
for line in file_obj:
f.write(line)
return render(request, 'index.html')
?
?
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!