Python Django view 两种return的实现方式

1.使用render方法

return render(request,'index.html')

返回的页面内容是index.html的内容,但是url不变,还是原网页的url,(比如是login页面的返回方法,跳转后的url还是为login) 一刷新就返回去了

2.使用redirect方法

return redirect(request,'idnex.html')

直接跳转到index.html页面中,url为跳转后的页面url

补充知识:Django的View是如何工作的?

View (视图) 主要根据用户的请求返回数据,用来展示用户可以看到的内容(比如网页,图片),也可以用来处理用户提交的数据,比如保存到数据库中。Django的视图(View)通常和URL路由一起工作的。服务器在收到用户通过浏览器发来的请求后,会根据urls.py里的关系条目,去视图View里查找到与请求对应的处理方法,从而返回给客户端http页面数据。

当用户发来一个请求request时,我们通过HttpResponse打印出Hello, World!

# views.py
from django.http import HttpResponse

def index(request):
 return HttpResponse("Hello, World!")

下面一个新闻博客的例子。/blog/展示所有博客文章列表。/blog/article/<int:id>/展示一篇文章的详细内容。

# blog/urls.py
from django.urls import path

from . import views

urlpatterns = [
 path('blog/', views.index, name='index'),
 path('blog/article/<int:id>/', views.article_detail, name='article_detail'),
]

# blog/views.py
from django.shortcuts import render, get_object_or_404
from .models import Article

# 展示所有文章
def index(request):
 latest_articles = Article.objects.all().order_by('-pub_date')
 return render(request, 'blog/article_list.html', {"latest_articles": latest_articles})

# 展示所有文章
def article_detail(request, id):
 article = get_object_or_404(Article, pk=id)
 return render(request, 'blog/article_detail.html', {"article": article})

模板可以直接调用通过视图传递过来的内容。

# blog/article_list.html
{% block content %}
{% for article in latest_articles %}
  {{ article.title }}
  {{ article.pub_date }}
{% endfor %}
{% endblock %}

# blog/article_detail.html
{% block content %}
{{ article.title }}
{{ article.pub_date }}
{{ article.body }}
{% endblock %}

以上这篇Python Django view 两种return的实现方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 对python中return与yield的区别详解

    首先比较下return 与 yield的区别: return:在程序函数中返回某个值,返回之后函数不在继续执行,彻底结束. yield: 带有yield的函数是一个迭代器,函数返回某个值时,会停留在某个位置,返回函数值后,会在前面停留的位置继续执行,直到程序结束 首先,如果你还没有对yield有个初步分认识,那么你先把yield看做"return",这个是直观的,它首先是个return,普通的return是什么意思,就是在程序中返回某个值,返回之后程序就不再往下运行了.看做return

  • python为Django项目上的每个应用程序创建不同的自定义404页面(最佳答案)

    有没有一种方法可以为Django项目中的每个应用程序创建多个自定义错误模板,我的意思是,在我的项目中,我有3个应用程序,每个应用程序将显示3种不同的custom 404错误. 现在,我在后台应用程序和前台显示相同的404错误页面. 最佳答案 创建一个自定义error view并将其分配给根urls.py中的handler404变量: from django.views.defaults import page_not_found def my_error_404(request, excepti

  • Python Django view 两种return的实现方式

    1.使用render方法 return render(request,'index.html') 返回的页面内容是index.html的内容,但是url不变,还是原网页的url,(比如是login页面的返回方法,跳转后的url还是为login) 一刷新就返回去了 2.使用redirect方法 return redirect(request,'idnex.html') 直接跳转到index.html页面中,url为跳转后的页面url 补充知识:Django的View是如何工作的? View (视图

  • Python单例模式的两种实现方法

    Python单例模式的两种实现方法 方法一  import threading class Singleton(object): __instance = None __lock = threading.Lock() # used to synchronize code def __init__(self): "disable the __init__ method" @staticmethod def getInstance(): if not Singleton.__instanc

  • Django csrf 两种方法设置form的实例

    第一种方法,在视图函数上边添加一条语句 @csrf_exempt 例子: @csrf_exempt def login(request): return render_to_response('app/login.html', locals()) 上边的方法是取消csrf的防御机制. 第二种方法,给出例子,主要为在html的form里面加入{% csrf_token %}这句话,视图函数内加入render(request, 'app/breakdown_view.html', locals())

  • python函数的两种嵌套方法使用

    目录 交叉嵌套 回环函数 python函数的两种嵌套方法使用函数的嵌套有两种方式: 交叉嵌套 回环嵌套 交叉嵌套 交叉嵌套的方式是在本函数中调用同一级或上一级函数的嵌套方法: def func(foo):     print(1)     foo()     print(3)      def a():     print(1) b = func(a) print(b) 输出的结果为: 113None 首先,程序会将 Python 文件中顶格的代码运行.函数 func 和 a 都是先开辟内存空间

  • 详解Python单元测试的两种写法

    目录 一.前言 二.实现 1.doctest 2.unittest 一.前言 python的两个单元测试包分别是 doctest 和 unittest,这两个包的使用起来各有长处,适用于不同的场景 doctest:直接写在方法体中,利用了 python 动态语言的特性,书写方式简单明了,前提是项目不要太大,如果项目复杂代码量大,再加上写在方法体中的单元测试,整体就会看起来有些臃肿,因此 doctest 适用于代码量不大的普通项目 unittest:一般写在独立文件中,与 spring 的单元测试

  • elasticsearch python 查询的两种方法

    elasticsearch python 查询的两种方法,具体内容如下所述: from elasticsearch import Elasticsearch es = Elasticsearch res1 = es.search(index="2018-07-31", body={"query": {"match_all": {}}}) print(es1) {'_shards': {'failed': 0, 'skipped': 0, 'suc

  • Python timer定时器两种常用方法解析

    这篇文章主要介绍了Python timer定时器两种常用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 方法一,使用线程中现成的: 这种一般比较常用,特别是在线程中的使用方法,下面是一个例子能够很清楚的说明它的具体使用方法: #! /usr/bin/python3 #! -*- conding: utf-8 -*- import threading import time def fun_timer(): print(time.strf

  • Python Django中的STATIC_URL 设置和使用方式

    使用Django静态设置时,遇到很多问题,经过艰苦的Baidu, stack overflow, Django原档阅读,终于把静态图片给搞出来了.特记录下来. 关键的概念:Django中,静态资源的存放通过设置 STATIC_URL, STATICFILES_DIRS 来设置,一般STATIC_URL设置为:/static/ STATIC_URL='/static/', 这个static 是在Django 具体APP下建立的static目录,用来存放静态资源.而STATICFILES_DIRS一

  • Vue实现两种路由权限控制方式

    目录 方式一:路由元信息(meta) 方式二:动态生成路由表(addRoutes) 路由权限控制常用于后台管理系统中,对不同业务人员能够访问的页面进行一个权限的限制. 对于无权限的页面可以跳转404页面或者提示无权限. 方式一:路由元信息(meta) 把所有页面都放在路由表中,只需要在访问的时候判断一下角色权限即可. vue-router 在构建路由时提供了元信息 meta 配置接口,我们可以在元信息中添加路由对应的权限,然后在路由守卫中检查相关权限,控制其路由跳转. 在 meta 属性里,将能

  • Feign调用中的两种Header传参方式小结

    目录 Feign调用中的两种Header传参方式 在请求拦截器中统一配置 通过@RequestHeader注解 调用feign接口时,如何往header中添加参数 总结 Feign调用中的两种Header传参方式 在Spring Cloud Netflix栈中,各个微服务都是以HTTP接口的形式暴露自身服务的,因此在调用远程服务时就必须使用HTTP客户端. 我们可以使用JDK原生的URLConnection.Apache的Http Client.Netty的异步HTTP Client, Spri

随机推荐