1.request对象

HTTPRequest对象就是咱们的视图函数的参数request

def home(request):
print(request) #<WSGIRequest: GET '/home/'>
# print(dir(request))

请求相关的常用值

  • path_info 返回用户访问url,不包括域名
  • method 请求中使用的HTTP方法的字符串表示,全大写表示。
  • GET 包含所有HTTP GET参数的类字典对象
  • POST 包含所有HTTP POST参数的类字典对象
  • body 请求体,byte类型 request.POST的数据就是从body里面提取到的

示例:

#/home/  纯路径
print(request.path) #/home/ 纯路径
print(request.path_info) #/home/?a=1&b=2 全路径(不包含ip地址和端口)
print(request.get_full_path()) #请求头相关数据,是一个字典
print(request.META) #一个字符串,表示请求使用的HTTP 方法。必须使用大写。
print(request.method) #一个类似于字典的对象,包含 HTTP GET 的所有参数
print(request.GET) #一个类似于字典的对象,如果请求中包含表单数据,则将这些数据封装成QueryDict对象。
print(request.POST) #能够拿到请求数据部分的数据(post,get没有)
print(request.body) #清除session 一般用于退出登录 注销
request.session.flush

2.HTTPResponse对象

redirect 重定向

from django.shortcuts import render,HttpResponse,redirect
def home(request):
#return HttpResponse("字符串")
#return render(request, 'xx.html') #页面
return redirect('/index/') #路径

urls中定义好路径(被访问的路径)(要跳转的路径)

from django.contrib import admin
from django.urls import path
from app01 import views
urlpatterns = [
path('admin/', admin.site.urls),
path('home/', views.home),
path('index/', views.index),
]

views中设置跳转

def home(request):
return redirect('/index/') #路径 def index(request):
return render(request, 'index.html') #页面

render可渲染html的变量

def  index(request):
v = "我真的好想你"
#模版渲染,这是在回复给浏览器之前做的事
return render(request, 'index.html',{v:v})
<div>可是我还想你啊,小猪</div>
<div>{{ v }}</div>

3.FBV和CBV

视图(视图函数和视图类)

类视图 CBV

views.py

from django.shortcuts import render,HttpResponse,redirect

#先引入类视图模块用于继承
from django.views import View class LoginView(View):
#处理get请求
def get(self,request):
return render(request,'login.html')
#处理post请求
def post(self,request):
print(request.POST)
return HttpResponse("登陆成功")

urls.py路由写法

path('login/', views.LoginView.as_view()),#根据请求选择方法

html

<form action="" method="post">
用户名: <input type="text" name="username">
密码 : <input type="text" name="pwd">
<input type="submit">
</form>

4.视图加装饰器

views.py

def wrapper(func):
def inner(*args,**kwargs):
print(111)
ret = func(*args,**kwargs)
print(222)
return ret
return inner @wrapper
def index(request):
print('我还想你')
return HttpResponse("又有何用")

给视图类加装饰器

方法一: 常用

from  django.views import  View
from django.utils.decorators import method_decorator class LoginView(View):
#处理get请求
@method_decorator(wrapper)
def get(self,request):
return render(request,'login.html')
#处理post请求
def post(self,request):
print(request.POST)
return HttpResponse("登陆成功")

方式二: 不常用

@method_decorator(wrapper,name="get")
class LoginView(View):
#处理get请求
def get(self,request):
return render(request,'login.html')
#处理post请求
def post(self,request):
print(request.POST)
return HttpResponse("登陆成功")

Dango之视图函数的更多相关文章

  1. Django视图函数

    一.视图函数 1. 视图函数的第一个参数一定是一个HTTPRequest类型的对象,这个对象是Django自动创建的,具体形参名通常用request.通过这个对象,可以调用请求的一些参数,比如requ ...

  2. Django创建模板、URL模式、创建视图函数

    1.在应用目录下创建模板(templates目录) 在模板目录下创建archive.html <!DOCTYPE html> <html lang="en"> ...

  3. Flask04 后台获取请求数据、视图函数返回类型、前台接受响应数据

    1 后台获取请求数据 1.1 提出问题 前台发送请求的方式有哪些 后台如何获取这些请求的参数 1.2 前台发送请求的方式 GET.POST.AJAX 点睛:如果不指定请求方式,浏览器默认使用GET请求 ...

  4. Django创建通用视图函数

    想在我们有两个视图: def thinkingview(request): user = request.user if request.method == 'GET': return render( ...

  5. Django - - - -视图层之视图函数(views)

    视图层之视图函数(views) 一个视图函数,简称视图,是一个简单的Python 函数,它接受Web请求并且返回Web响应.响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档 ...

  6. python web框架篇:views视图函数

    Django请求的生命周期是怎样的? 简单地说,通过URL对应关系匹配 ->找到对应的函数(或者类)->返回字符串(或者读取Html之后返回渲染的字符串) 解剖起来如下: 1. 当用户在浏 ...

  7. flask 视图函数的使用

    flask框架 视图函数当中 各种实用情况简单配置 1 建立连接 2 路由参数 3 返回网络状态码 4 自定义错误页面 5 重定向 6 正则url限制 和 url 优化 7 设置和获取cookie # ...

  8. Django Views(视图函数)

    http请求中产生两个核心对象: http请求:HttpRequest对象 http响应:HttpResponse对象 所在位置:django.http 之前我们用到的参数request就是HttpR ...

  9. Flask实战第6天:视图函数Response返回值

    视图函数的返回值会被自动转换为一个响应对象,Flask的转换逻辑如下: 如果返回的是一个合法的响应对象,则直接返回 可以使用make_response函数来创建Response对象,这个方法可以设置额 ...

随机推荐

  1. jQuery文档操作之修改操作

    replaceWith() 语法: $(selector).replaceWith(content); 将所有匹配的元素替换成指定的string.js对象.jQuery对象. // 将所有的h5标题替 ...

  2. 谷歌protocolbuff使用说明步骤

    Protocolbuff 目录 1       Protocolbuff定义和作用... 1 2       Protocolbuff的使用步骤... 1 3       .proto编写格式... ...

  3. Travis-CI自动化测试并部署至自己的CentOS服务器

    一直都想自己部署一下自动化测试部署,在了解了Travis-CI之后终于准备在这次和小伙伴一起做的一个博客类网站实验下了. 因为这是一个前后端分离的项目,所以我这里只管前端工程的自动化部署,前端主要用V ...

  4. Netty入门官方例子

    参考链接:https://blog.csdn.net/wocjy/article/details/78661464 maven依赖: <!-- Netty开始 --> <!-- ht ...

  5. Docker关键概念阐述

    要了解Docker需要对其体系结构中的几个关键概念有所了解,主要包括image.container.service.swarm.stack等. 在介绍这几个概念时,会使用到一个测试环境,这个测试环境是 ...

  6. kettle的数据库配置的表分析

    以下场景,用mysql来举例说明.本文是在初步了解了kettle的数据库配置之后,做的总结和分析.将kettle中的配置用数据库管理的时候,在创建了一个新的数据库,还没有做任何kettle中的job和 ...

  7. Dev中GridView——背景颜色改变

    DevExpress.XtraGrid.Views 设置指定行的背景颜色 1.事件:CustomDrawCell2.示例: private void gridView1_CustomDrawCell( ...

  8. Mycat读写分离 + 主从复制(Gtid)

    大概架构如下: IP 主机名   OS192.168.1.177 mycat   CentOS7.4.1708192.168.1.184   master CentOS7.4.1708192.168. ...

  9. 八十四:redis之redis的集合、哈希操作

    set集合操作 添加元素:sadd set value1 value2... 查看元素:smembers set 移除元素:srem set member 查看集合中的元素个数:scard set 获 ...

  10. maven的基本使用

    安装: 1.下载maven http://maven.apache.org/ 2.将maven包解压并放置到安装目录 3.添加环境变量M2_HOME,path当中添加;%M2_HOME%\bin; 4 ...