当前位置: 首页 > 文档资料 > Python 全栈 >

2.5 Django的视图层

优质
小牛编辑
135浏览
2023-12-01

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'.]