python django web项目的构建步骤(二)

简介:

视图的实现:

视图是一个简单的 Python 方法,它接受一个请求对象,负责实现:

任何业务逻辑(直接或间接)

上下文字典,它包含模板数据

使用一个上下文来表示模板

响应对象,它将所表示的结果返回到这个框架中


在 Django 中,当一个 URL 被请求时,所调用的 Python 方法称为一个视图(view),这个视图所加载并呈现的页面称为模板(template)。由于这个原因,Django 小组将 Django 称为一个 MVT(model-view-template)框架。另一方面,TurboGears 把自己的方法称作控制器(controller),将所呈现的模板称为视图(view),因此缩写也是 MVC。其区别在于广义的语义,因为它们所实现的内容是相同的。


1、首先我们可以简单的来实现一下,就在myapp/views.py这个文件中写一个方法:

1
2
3
4
5
6
[root@node3 myapp] # vim views.py
from django.shortcuts  import  render
from django.http  import  HttpResponse
 
def index(request):
     return  HttpResponse( 'Hello Word!' )

2、在mysite2中的urls.py中加入一条记录:

1
2
[root@node3 myapp] # vim ../mysite2/urls.py
url(r '^myapp/$' 'myapp.views.index' ),  # ^myapp/$ 这个可以随意写,这个是在地址栏输入的地址,但是后面的myapp.views.index就必须写views.py中定义的方法。

这个在url地址栏中就可以访问到Hello Word!了

wKioL1V6T6KSvg6uAAA935EPQcI222.jpg

########## 视图-模块-URL的关联使用  ###########

1、在myapp文件夹下编写views.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[root@node3 myapp] # vim views.py
from django.shortcuts  import  render
from django.http  import  HttpResponse
from django.template  import  Context, loader
from myapp.models  import  *
import  json
 
def studentInfo(request):
     ret = []
     if  request.method ==  'GET' :
         student_list = Student.objects.all()
         for  student_info  in  student_list:
             ret.append(student_info)
     return  HttpResponse(ret)
 
def teacherInfo(request):
     ret = []
     if  request.method ==  'GET' :
         teacher_list = Teacher.objects.all()
         for  teacher_info  in  teacher_list:
             ret.append(teacher_info)
     return  HttpResponse(ret)

2、在mysite2文件夹下的url中添加下面两条url记录:

1
2
url(r '^studentinfo/$' 'myapp.views.studentInfo' ),
url(r '^teacherinfo/$' 'myapp.views.teacherInfo' ),

在页面地址栏中就可以这样查看内容了:

10.17.1.151:8000/studentinfo/

wKioL1V6UAfianq6AACDoF5wCdU640.jpgwKioL1V6UBqCnqnyAABzA7YqayM118.jpg

--------------------------------------------------------------------------------

3、到这我们还没添加模板,这里我们来添加一个模板文件夹,专门用来存放html页面信息的:

在项目目录mysite2下添加模板文件夹templates,编写模板

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@node3 mysite2] # mkdir templates
[root@node3 mysite2] # cd templates
[root@node3 templates] # ll
total 4
-rw-r--r--. 1 root root 91 Jun 11 00:06 show_studentinfo.html
[root@node3 templates] # vim show_studentinfo.html
{%  for  in  student_list %}
<div>
     <h3>`n`< /h3 >
< /div >
{% endfor %}
 
`student_list`

4、然后视图改这以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@node3 myapp] # vim views.py
from django.shortcuts  import  render, render_to_response
from django.http  import  HttpResponse
from django.template  import  Context, loader
from myapp.models  import  *
import  json
 
def studentInfo(request):
     student_list = Student.objects.all()
     # show_studentinfo.html这里写模板文件夹里面对应的html文件名
     return  render_to_response( './show_studentinfo.html' , { 'student_list' :student_list})
 
def teacherInfo(request):
     teacher_list = Teacher.objects.all()
     return  render_to_response( './show_teacherinfo.html' , { 'teacher_list' :teacher_list})

5、然后在mysite2的url文件下添加一行url记录:

1
2
url(r '^show_studentinfo/$' 'myapp.views.studentInfo' ),    # show_studentinfo这个是templates模板文件中的文件名,但不用加.html
url(r '^show_teacherinfo/$' 'myapp.views.teachertInfo' ),   # myapp.views.teachertInfo这个是views中定义的方法

6、然后在地址栏中就可以访问得到了:

wKioL1V6ULTyayy9AAHtjFNr5pQ451.jpgwKiom1V6TxjxcrjHAAEngVsUc9o246.jpg










本文转自 wei0164 51CTO博客,原文链接:http://blog.51cto.com/tanxw/1661159,如需转载请自行联系原作者
目录
相关文章
|
6天前
|
Java API 数据库
构建RESTful API已经成为现代Web开发的标准做法之一。Spring Boot框架因其简洁的配置、快速的启动特性及丰富的功能集而备受开发者青睐。
【10月更文挑战第11天】本文介绍如何使用Spring Boot构建在线图书管理系统的RESTful API。通过创建Spring Boot项目,定义`Book`实体类、`BookRepository`接口和`BookService`服务类,最后实现`BookController`控制器来处理HTTP请求,展示了从基础环境搭建到API测试的完整过程。
21 4
|
5天前
|
安全 数据库 C++
Python Web框架比较:Django vs Flask vs Pyramid
Python Web框架比较:Django vs Flask vs Pyramid
13 4
|
6天前
|
前端开发 开发者 容器
构建响应式Web界面:Flexbox与Grid布局的深度解析
【10月更文挑战第11天】本文深入解析了CSS3中的Flexbox和Grid布局,探讨了它们的特点、应用场景及使用方法。Flexbox适用于一维布局,如导航栏;Grid布局则适用于二维布局,如复杂网格。通过示例代码和核心属性介绍,帮助开发者灵活构建响应式Web界面。
16 5
|
6天前
|
存储 JavaScript 前端开发
深入探索 Vue.js:构建现代 Web 应用的利器
【10月更文挑战第11天】深入探索 Vue.js:构建现代 Web 应用的利器
10 1
|
8天前
|
JavaScript 前端开发 网络架构
如何使用Vue.js构建响应式Web应用
【10月更文挑战第9天】如何使用Vue.js构建响应式Web应用
|
8天前
|
JavaScript 前端开发
如何使用Vue.js构建响应式Web应用程序
【10月更文挑战第9天】如何使用Vue.js构建响应式Web应用程序
|
8天前
|
前端开发 JavaScript UED
构建现代Web应用:使用React框架打造单页面应用
【10月更文挑战第9天】构建现代Web应用:使用React框架打造单页面应用
|
8天前
|
前端开发 JavaScript 测试技术
构建响应式Web应用程序:React实战指南
【10月更文挑战第9天】构建响应式Web应用程序:React实战指南
|
8天前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
46 3
|
14天前
|
设计模式 测试技术 持续交付
开发复杂Web应用程序
【10月更文挑战第3天】开发复杂Web应用程序
28 2