编写视图

一个视图函数,或者简短来说叫做视图,是一个简单的Python函数,它接受web请求,并且返回web响应。

响应可以是一个网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片,任何东西都可以。

无论视图本身包含什么逻辑,都要返回响应。

代码写在哪里也无所谓,只要它在你的Python目录下面。

为了能够把代码放在某个地方,惯例是把视图放在叫做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)

让我们来逐行阅读上面的代码:

  • 首先,我们从django.http模块导入了HttpResponse类,以及Python的datetiem库。
  • 接着,我们定义了current_datetime函数。它是一个视图函数。每个视图函数都应接收HttpRequest对象作为第一个参数,一般叫做request。
  • 注意视图函数的名称并不重要,不需要用一个统一的命名方式来命名,以便让Django识别它。我们将其命名为current_datetime,是因为这个名称能够精确地反映出它的功能。
  • 这个视图会返回一个HttpResponse对象,其中包含生成的响应。每个视图函数都要返回HttpResponse对象。

http请求——响应过程中有两个核心对象:

http请求对象:HttpRequest

http响应对象:HttpResponse

所在位置:django.http

2. 快捷函数

2.1 render函数

语法格式为:
>render(request, template_name[, context])

作用:

结合一个给定的模板和一个给定的上下文字典,并返回一个渲染后的HttpResponse对象。

参数:

request: 用于生成响应的请求对象。

template_name: 要使用的模板的完整名称,可选的参数。

context: 添加到模板上下文的一个字典。默认是一个空字典。如果字典中的某个值是可调用的,视图将在渲染模板之前调用它。

content_type:生成的文档要使用的MIME类型。默认为DEFAULT_CONTENT_TYPE设置的值。

status: 响应的状态码。默认为200.

2.2 redirect()函数

urls.py:
```Python

url(r"login", views.login),

url(r"yang_back", views.yang_back),

views.py
```Python
def login(request):
if req.method=="POST":
if 1:
# return redirect("/yang_back/")
name="yangwei" return render(request,"my backend.html",locals()) return render(request,"login.html",locals()) def yang_back(req): name="杨魏" return render(req,"my backend.html",locals())

login.html


<form action="/login/" method="post">
<p>姓名<input type="text" name="username"></p>
<p>性别<input type="text" name="sex"></p>
<p>邮箱<input type="text" name="email"></p>
<p><input type="submit" value="submit"></p>
</form>

my backend.html

<h1>用户{{ name }}你好</h1>

2.3 redirect()函数和render()函数的区别

1. render的页面需要模板语言渲染,需要的将数据库的数据加载到html,那么所有的这一部分除了写在yang_back的视图函数中,必须还要写在login中,代码重复,没有解耦。

2. the most important: url没有跳转到/yang_back/,而是还在/login/,所以当刷新后又得重新登录。

最新文章

  1. 说说面向服务的体系架构SOA
  2. Jenkins的使用
  3. 像素图的实时光照 Lighting on Pixel Art
  4. android 歌词解析
  5. Best Time to Buy and Sell Stock with Cooldown
  6. JavaScript入门(2)
  7. PL/SQL之--游标
  8. nodejs学习笔记&lt;五&gt;npm使用
  9. activity传递数据
  10. QC、IQC、IPQC、FQC、OQC、QA分别的定义
  11. Android(java)学习笔记72:线程的状态转换图以及常见执行情况
  12. JS实现一键复制功能
  13. iOS 之 内存检查instrument
  14. iOS 科学计数法保留N位有效数字
  15. Docker容器时间与宿主机时间不一致
  16. RabbitMQ for Mac OS Install
  17. 数据库导出excel,前后端分离
  18. redis序列化
  19. (办公)eclipse连接github cannot open git-upload-pack(git-receive-pack)
  20. c#设计模式3抽象工厂模式(Abstract Factory)

热门文章

  1. ts转js 并压缩
  2. react项目中关于img标签的src属性的使用
  3. Get HttpWebResponse and HttpClient Return String by proxy
  4. Python中异常打印——面向程序猿
  5. 安装HAXM报错:failed to configure driver unknown error. failed to open driver 并提示数字签证不可用
  6. Web API与MVC控制器的区别
  7. 正则表达式split匹配多种例如 “】”,“,”两种(页面级中英文切换方案)
  8. JavaScript 标准内置对象
  9. rpc框架画 和spring cloud流程图
  10. 【SpringBoot】入门程序和机制分析