Dango之视图函数
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之视图函数的更多相关文章
- Django视图函数
一.视图函数 1. 视图函数的第一个参数一定是一个HTTPRequest类型的对象,这个对象是Django自动创建的,具体形参名通常用request.通过这个对象,可以调用请求的一些参数,比如requ ...
- Django创建模板、URL模式、创建视图函数
1.在应用目录下创建模板(templates目录) 在模板目录下创建archive.html <!DOCTYPE html> <html lang="en"> ...
- Flask04 后台获取请求数据、视图函数返回类型、前台接受响应数据
1 后台获取请求数据 1.1 提出问题 前台发送请求的方式有哪些 后台如何获取这些请求的参数 1.2 前台发送请求的方式 GET.POST.AJAX 点睛:如果不指定请求方式,浏览器默认使用GET请求 ...
- Django创建通用视图函数
想在我们有两个视图: def thinkingview(request): user = request.user if request.method == 'GET': return render( ...
- Django - - - -视图层之视图函数(views)
视图层之视图函数(views) 一个视图函数,简称视图,是一个简单的Python 函数,它接受Web请求并且返回Web响应.响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档 ...
- python web框架篇:views视图函数
Django请求的生命周期是怎样的? 简单地说,通过URL对应关系匹配 ->找到对应的函数(或者类)->返回字符串(或者读取Html之后返回渲染的字符串) 解剖起来如下: 1. 当用户在浏 ...
- flask 视图函数的使用
flask框架 视图函数当中 各种实用情况简单配置 1 建立连接 2 路由参数 3 返回网络状态码 4 自定义错误页面 5 重定向 6 正则url限制 和 url 优化 7 设置和获取cookie # ...
- Django Views(视图函数)
http请求中产生两个核心对象: http请求:HttpRequest对象 http响应:HttpResponse对象 所在位置:django.http 之前我们用到的参数request就是HttpR ...
- Flask实战第6天:视图函数Response返回值
视图函数的返回值会被自动转换为一个响应对象,Flask的转换逻辑如下: 如果返回的是一个合法的响应对象,则直接返回 可以使用make_response函数来创建Response对象,这个方法可以设置额 ...
随机推荐
- AtCoder AGC032E Modulo Pairing (二分、贪心与结论)
题目链接 https://atcoder.jp/contests/agc032/tasks/agc032_e 题解 猜结论好题. 结论是: 按\(a_i\)从小到大排序之后,一定存在一种最优解,使得以 ...
- MessageListenerAdapter--消息监听适配器
我们把之前的消息监听代码注释,可以不用直接加消息监听,而是采用MessageListenerAdapter的方式,我们来学习下如何使用默认的handleMessage,自定义方法名,自定义转换器. 适 ...
- Inter IPP 绘图 ippi/ipps
IPP的资料网上比较少,主要还是参考Inter官网和文档 官方文档ipps.pdf主要是对数据做处理,包括加减乘除.FFT.DFT等 文档ippi.pdf只要是对图像做处理,包括通道转换.图片处理等 ...
- echarts ajax请求demo
<body> <!--为ECharts准备一个具备大小(宽高)的Dom--> <div id="main" style="width: 10 ...
- koa 基础(十八)es6中的类、静态方法、继承
1.app.js /** * es6中的类.静态方法.继承 */ // 定义Person类 class Person { constructor(name, age) { /*类的构造函数,实例化的时 ...
- @Transient的应用
我今天分配的任务是为一个页面Debug,遇到了一个问题查询的实体类在数据库没有对应的表,这时最常用的是建立视图或者表,但是应用@Transient注释可以让你更简单,免除建立表还有视图需要找多表关联关 ...
- nvl(sum(字段),0) 的时候,能展示数据0,但是group by 下某个伪列的时候,查不到数据(转载)
今天碰到一个比较有疑惑的问题,就是在统计和的时候,我们往往有时候查不到数据,都会再加个 nvl(sum(字段),0) 来显示这个字段,但是如果我们再加个group by ,就算有加入这个 nvl(nu ...
- Copy-On-Write in Swift
Premature optimisation is the root of all evil. But, there are moments where we need to optimise our ...
- Canvas学习:封装Canvas绘制基本图形API
Canvas学习:封装Canvas绘制基本图形API Canvas Canvas学习 从前面的文章中我们了解到,通过Canvas中的CanvasRenderingContext2D对象中的属性和方 ...
- 代码实现:从键盘输入接收一个文件夹路径,打印出该文件夹下所有的.java文件名
package com.loaderman.test; import java.io.File; import java.io.FileReader; import java.util.Scanner ...