Django的视图层(View)
Django框架中的视图(View)是用来负责处理用户请求和返回响应的逻辑程序
视图(View)简而言之就是一个Python的函数或方法,接受处理Web请求。
视图的响应可以是网页的HTML内容,重定向或404错误,XML文档或图像。
视图的代码按惯例是放置一个名为
views.py
的文件中,此文件放在项目或应用程序目录中。(其实视图文件名可以自己定义)
1. 一个简单的视图
这是一个返回当前日期和时间的视图,作为HTML文档:
from django.http import HttpResponse
import datetime
def current_datetime(request):
now = datetime.datetime.now()
html = "<html><body>It is now %s.</body></html>" % now
return HttpResponse(html)
2. 返回错误
# 直接返回一个404,没有去加载404的模板页面
# return HttpResponseNotFound('<h1>Page not found</h1>')
# 可以直接返回一个status状态码
# return HttpResponse(status=403)
# 返回一个404的错误页面
raise Http404("Poll does not exist")
3.关于重定向
重定向(Redirect)就是通过各种方法将各种网络请求重新定个方向转到其它位置
from django.shortcuts import redirect
from django.core.urlresolvers import reverse
# redirect重定向 reverse反向解析url地址
# return redirect(reverse('userindex'))
# 执行一段js代码,用js进行重定向
# return HttpResponse('<script>alert("添加成功");location.href = "/userindex"; </script>')
# 加载一个提醒信息的跳转页面
context = {'info':'数据添加成功','u':'/userindex'}
return render(request,'info.html',context)
4. 基于类的基本视图:
示例views.py:
from django.http import HttpResponse
from django.views import View
class MyView(View):
def get(self, request, *args, **kwargs):
return HttpResponse('Hello, World!')
示例urls.py:
from django.urls import path
from myapp.views import MyView
urlpatterns = [
path('mine/', MyView.as_view(), name='my-view'),
]
# 其中as_view()是接受请求并返回响应的可调用视图['get', 'post', 'put', 'patch', 'delete, 'options'.]