django的视图函数介绍详解编程语言

我们来看下views视图中的函数的request这个变量到底有哪些方法和属性

1、request.path

django的视图函数介绍详解编程语言

结果:不包括域名和端口的url路径

django的视图函数介绍详解编程语言

2、request.method

django的视图函数介绍详解编程语言

结果:这次请求的方法,这个方法有get和post两种

django的视图函数介绍详解编程语言

3、request.POST.get():获取通过post方式提交的数据的信息,这个获取的是一个字典对象

django的视图函数介绍详解编程语言

结果:

django的视图函数介绍详解编程语言

 4、COOKIES

5、sessions

在来看下HttpResponse对象

1、render,返回一个html文件,render的第一个参数必须是request,第二个参数就是html文件,第三个参数是渲染模板语言,第三个参数不是必须的

2、render中的参数有个locals(),我们先通过一个例子看下locals()有社么作用?

比如我们要渲染一个html文件

django的视图函数介绍详解编程语言

 然后我们在views函数中渲染这个模板

django的视图函数介绍详解编程语言

 页面得到的结果

django的视图函数介绍详解编程语言

方式2,这个时候我们就需要用到locals()这个方法,其实locals()方法就是代表所有的本地变量

首先我们要修改一下html文件中的 变量,要和views函数中的变量的名称保持一致

django的视图函数介绍详解编程语言

然后我们修改views中的视图函数

django的视图函数介绍详解编程语言

最后我们通过页面访问这个html。得到的效果和方式1是一样的

django的视图函数介绍详解编程语言

补充一个render_to_response方法,作用和render的作用一样,只是不用写request参数了,也可以和render一样返回一个html页面,同时渲染html文件

django的视图函数介绍详解编程语言

前端同样也可以实现渲染的效果

django的视图函数介绍详解编程语言

3、redirect():用来做页面重定向的,比如我们

先导入redirect这个模块

django的视图函数介绍详解编程语言

然后使用redirect跳转到其他页面

django的视图函数介绍详解编程语言

我们也可以跳转到本域的html文件上,这个必须写路径

django的视图函数介绍详解编程语言

那我们怎么找到这个路径呢?这个路径其实就是我们如何通过页面去访问这个html文件,那么就把这个路径放在redirect的参数中

 我们在页面访问tiantiantiyu,就会跳转到blog/news这个页面上

django的视图函数介绍详解编程语言

rendir和redirect的主要区别

1、rendir主要是用来返回一个页面,并且渲染这个页面

2、redirect主要是用来跳转到一个页面,重新执行一次url路径中的函数

其实本质上rendir和redirect都可以实现返回一个页面给前端的用户,但是最主要的问题就是使用rendir他的url路径没有变化,如果一旦刷新页面,则又回到之前的页面,而使用redirect则是url路径也变了,刷新不会回到之前的url路径

我们可以使用redirect和rendir都实现返回一个登陆成功,返回一个主页的页面的效果

先看使用redirect

def login(request): 
    if request.method == "GET": 
        return render(request,"login.html") 
    else: 
        name = "崔皓然" 
        # return render(request, "home.html", {"user_name": name}) 
        return redirect("/app1/home/") 
 
def home(request): 
    name = "周雍博" 
    return render(request,"home.html",{"user_name":name}) 

  

我们这个时候看页面的url

django的视图函数介绍详解编程语言

 在来看使用rendir

def login(request): 
    if request.method == "GET": 
        return render(request,"login.html") 
    else: 
        name = "崔皓然" 
        return render(request, "home.html", {"user_name": name}) 
        # return redirect("/app1/home/") 
 
def home(request): 
    name = "周雍博" 
    return render(request,"home.html",{"user_name":name}) 

  

在来看url的路径

django的视图函数介绍详解编程语言

其实这个是rendir和redirect最大的区别

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/20836.html

(0)
上一篇 2021年7月19日 23:50
下一篇 2021年7月19日 23:50

相关推荐

发表回复

登录后才能评论