django-3-视图(views.py)与网址(urls.py)
视图与网址
操作文件:urls.py、views.py
urls.py
作用:用于处理前台的链接(如前台访问:127.0.0.1:8080/index/1212/21212),其实永远访问的是同一个文件,至于结果则是通过urls处理,调用不同views中的不同函数,当然这些函数可以在urls中指定。
主要格式:
1.7:url(r
'^add/$'
,
'calc.views.add'
, name
=
'add'
)
,
1.8:
url(r
'^add/$'
, views.add, name
=
'add'
),
2.0:
path(
'add/'
, views.add, name
=
'add'
),
注意:1.8和2.0需要将views导入到urls中,如 from
app
import
views
额外:可以在app中新建urls,通过include函数(2.0:from
django.urls
import
include)使其有效(path('app/', include('app.urls')),)
值得一提的是,每个路由都有一个name(如上:name="add")可写可不写,这里虽不是必须但也极其重要,他是前台链接的别名,即模板中可以使用这个name的值作为路由,需要和{% url %}一起使用。这样写的好处是,代码可维护性很高。
views.py
上面提到需要在urls中引入views模块,如:views.add,其实是在调用views中的add方法,这个方法很特殊,必须至少一个参数,而第一个参数作为数据请求的句柄,也就是request,在里面可以获取前端发来的请求,而且必须返回一个HttpResponse对象。
作用:用于处理请求、数据库交互、模板调用等(内容很多)。
调用模板(templates): 在views 的函数中最后加上return
render(request,
'home.html'
),
home.html即为模板名称,相应的在tempalates中必须有home.html文件,并且需要设置settings.py中的TEMPLATES变量,设置DIRS:'DIRS': [os.path.join(BASE_DIR,'Templates')],
关于FBV与CBV
FBV:f即为function
通过在views.py文件中(其他文件也行,只要urls.py文件能访问并调用该函数,且最终return HttpResponse(),即可)定义函数,(如def index(request):),而在urls.py中可通过
path(
'index/'
, views.index, name
=
'index'
)调用index方法,这就是FBV。
那么CBV又是什么呢?
C即为class,通过类调用,这个类是一个很特殊的类。
1、需要继承View类
views.py--------------------------------------------------------------- from django.views.import View
class A(View): def get(self,request): return HttpResponse() def post(self,request): return HttpResponse() urls.py------------------------------------------------------------------ path('A/', views.A.as_view()), #注意,是views.A.as_view()
#解释如下:
通过views.A.as_view(),django会根据method的值会自动调用get或者post,当然还有其他方法,一共八种,当然from表单只能使用get或者post
CBV扩展
django是如何调用get和post方法的呢?
其实是通过Views下的dispatch方法来调用的。
因此,重写dispath方法,来额外编写在客户端请求get或者post之前,需要做的工作。比如:用户验证等
from django.views.import View
class A(View): def get(self,request): return HttpResponse() def post(self,request): return HttpResponse() def dispatch(self,request,*args,**kwargs): result = super(A,self).dispatch(request,*args,**kwargs) #在这里编写自己的判断逻辑,比如:用户登录验证等内容 return result
django-3-视图(views.py)与网址(urls.py)的更多相关文章
- Django框架——基础之路由系统(urls.py)
1.URL路由系统前言 URL是Web服务的入口,用户通过浏览器发送过来的任何请求,都是发送到一个指定的URL地址,然后被响应. 在Django项目中编写路由,就是向外暴露我们接收哪些URL的请求,除 ...
- Django框架——基础之路由系统(urls.py)11111111
1.URL路由系统前言 URL是Web服务的入口,用户通过浏览器发送过来的任何请求,都是发送到一个指定的URL地址,然后被响应. 在Django项目中编写路由,就是向外暴露我们接收哪些URL的请求,除 ...
- Django:视图views(三)
写一下Cookie.重定向.Session Cookie 测试代码,承接前面的代码: 路由: booktest/urls.py urlpatterns = [ url('^$',views.index ...
- Django:视图views(二)
把request对象和response对象原理流程写一下 request对象 服务器端接收到http协议的请求,会根据报文信息构建HttpRequest对象 通过第一个参数,把该对象传递给视图函数 R ...
- Django:视图views(一)
1.环境搭建 在django中,视图负责与web请求进行交互 视图本质上是一个Python函数,定义在booktest/views.py.通过django1/urls.py路由到该视图中. 首先经过创 ...
- Django之视图Views
视图 视图接受Web请求并且返回Web响应 视图就是一个python函数,被定义在views.py中 响应可以是一张网页的HTML内容,一个重定向,一个404错误等等 响应处理过程如下图: URLco ...
- Django (六) 视图 views
views 1. 视图及HttpRequest 和HttpResponse Django中的视图主要用来接受Web请求,并做出响应. 视图的本质就是一个Python中的函数 视图的响应分为两大类 1) ...
- python django url直接访问txt文件。urls.py路由直接指向txt文件
from django.views.generic import TemplateView urlpatterns = [ url(r'^test/',TemplateView.as_view(tem ...
- Django入门三之urls.py重构及参数传递
1. 内部重构 2. 外部重构 website/blog/urls.py website/website/urls.py 3. 两种参数处理方式 -1. blog/index/?id=1234& ...
- python框架之Django(4)-视图&路由
视图 负责接收请求和返回响应 FBV和CBV FBV FBV(function base views) 就是在视图里使用函数处理请求. from django.conf.urls import url ...
随机推荐
- Django Rest Framewoek
1 什么是RESTful REST 指的是一种软件架构风格.设计风格,而不是标准,只是提供了一组设计原则和约束条件.满足这些约束条件和原则的应用程序或设计就是 RESTful. 2 RESTful设计 ...
- Solution for NULL pointer dereference
•mmap_min_addr forbids users from mapping low addresses 1. First available in July 2007 2. Several c ...
- 73.Largest Rectangle in Histogram(最大矩形)
Level: Hard 题目描述: Given n non-negative integers representing the histogram's bar height where the ...
- springcloud费话之配置中心客户端(SVN)
目录: springcloud费话之Eureka基础 springcloud费话之Eureka集群 springcloud费话之Eureka服务访问(restTemplate) springcloud ...
- 剑指offer学习--初级c++面试题
定义一个空的类型,里面没有任何成员函数和成员变量,对该类型求sizeof,得到的结果是多少? 答案是1.空类型中的实例中不包含任何信息,本来求sizeof应该是0,但是当我们声明该类型的实例的时候,他 ...
- 2018-4-30-win2d-CanvasRenderTarget-vs-CanvasBitmap
title author date CreateTime categories win2d CanvasRenderTarget vs CanvasBitmap lindexi 2018-04-30 ...
- ssh-add - 向认证代理添加 RSA 或 DSA 身份数据
总览 (SYNOPSIS) ssh-add [-lLdDx ] [-t life ] [file ... ] ssh-add -s reader ssh-add -e reader 描述 (DESCR ...
- Linux知识-不断更新2
为了自己看的更清楚,也为了不断的总结,每次更新后都会另发一篇. 工作中遇到某一文件夹磁盘空间不够,当然每次都是清理日志,最后发现还是不太行,还不能扩容,只能先想办法迁移目录,避免此问题发生,但在这之前 ...
- 解决Minikube start卡住的方法
安装与问题 在mac上安装minikube对k8s进行学习,根据官方Quick Start brew cask install minikube 就可以完成minikube的安装 在安装前需要安装vi ...
- javascript 浏览器定位
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...