视图与网址

操作文件: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)的更多相关文章

  1. Django框架——基础之路由系统(urls.py)

    1.URL路由系统前言 URL是Web服务的入口,用户通过浏览器发送过来的任何请求,都是发送到一个指定的URL地址,然后被响应. 在Django项目中编写路由,就是向外暴露我们接收哪些URL的请求,除 ...

  2. Django框架——基础之路由系统(urls.py)11111111

    1.URL路由系统前言 URL是Web服务的入口,用户通过浏览器发送过来的任何请求,都是发送到一个指定的URL地址,然后被响应. 在Django项目中编写路由,就是向外暴露我们接收哪些URL的请求,除 ...

  3. Django:视图views(三)

    写一下Cookie.重定向.Session Cookie 测试代码,承接前面的代码: 路由: booktest/urls.py urlpatterns = [ url('^$',views.index ...

  4. Django:视图views(二)

    把request对象和response对象原理流程写一下 request对象 服务器端接收到http协议的请求,会根据报文信息构建HttpRequest对象 通过第一个参数,把该对象传递给视图函数 R ...

  5. Django:视图views(一)

    1.环境搭建 在django中,视图负责与web请求进行交互 视图本质上是一个Python函数,定义在booktest/views.py.通过django1/urls.py路由到该视图中. 首先经过创 ...

  6. Django之视图Views

    视图 视图接受Web请求并且返回Web响应 视图就是一个python函数,被定义在views.py中 响应可以是一张网页的HTML内容,一个重定向,一个404错误等等 响应处理过程如下图: URLco ...

  7. Django (六) 视图 views

    views 1. 视图及HttpRequest 和HttpResponse Django中的视图主要用来接受Web请求,并做出响应. 视图的本质就是一个Python中的函数 视图的响应分为两大类 1) ...

  8. python django url直接访问txt文件。urls.py路由直接指向txt文件

    from django.views.generic import TemplateView urlpatterns = [ url(r'^test/',TemplateView.as_view(tem ...

  9. Django入门三之urls.py重构及参数传递

    1. 内部重构 2. 外部重构 website/blog/urls.py website/website/urls.py 3. 两种参数处理方式 -1. blog/index/?id=1234& ...

  10. python框架之Django(4)-视图&路由

    视图 负责接收请求和返回响应 FBV和CBV FBV FBV(function base views) 就是在视图里使用函数处理请求. from django.conf.urls import url ...

随机推荐

  1. 洛谷 P1168 中位数(优先队列)

    题目链接 https://www.luogu.org/problemnew/show/P1168 解题思路 这个题就是求中位数,但是暴力会tle,所以我们用一种O(nlogn)的算法来实现. 这里用到 ...

  2. [转]java web 文件上传

    实现WEB开发中的文件上传功能,需完成如下二步操作: 在WEB页面中添加上传输入项,<input type=“life” name=“”>,使用时注意: 1.          必须要设置 ...

  3. form表单,登录用户,密码,按钮,提交、重置

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. html标签的target属性应用

    1. 定义和用法 target 属性规定在何处打开页面上的所有链接. <head> <base target="_blank" /> </head&g ...

  5. spring boot 不连接数据库启动

    Consider the following:    If you want an embedded database (H2, HSQL or Derby), please put it on th ...

  6. Git 常用命令简单记录

    分布式版本控制系统,跟踪文本文件的改动 ubuntu安装: sudo apt install git 安装完成后,设置使用的用户名和邮箱: 全局: git config --global user.n ...

  7. java访问ftp

    1.连接ftp FTPClient ftpClient = new FTPClient(); ftpClient.connect(host,port); ftpClient.login(userNam ...

  8. Center os 用户环境变量

    vi ~/.bash_profile进入用户环境变量设置 export JAVA_HOME=/usr/java/jdk1.7.0_76export JAVA_BIN=$JAVA_HOME/binexp ...

  9. java基础复习(二)

    一. 基本语法 如果一个源文件中什么内容都没有,编译会不会生成 字节码文件?不会 如果一个类中没有主方法(如下图),编译运行会怎么样?编译可以通过,但运行报错 : 没有主方法 主方法 : 是一个特殊的 ...

  10. Linux命令行工具之free命令

    原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11524691.html 使用 free 查看整个系统的内存使用情况 Note:不同版本的free输出可 ...