视图与网址

操作文件: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

 

最新文章

  1. 从零开始编写自己的C#框架(8)——后台管理系统功能设计
  2. Hibernate入门与简谈
  3. 18.中介者模式(Mediator Pattern)
  4. App软件开发的完整在线流程(一看就懂)
  5. C#:判断软件运行的环境是否是Pad(PC)
  6. lsm-tree
  7. SAP接口编程 之 JCo3.0系列(03) : Table参数
  8. Oracle用户、权限、角色管理
  9. oracle切割字符串后以单列多行展示
  10. HTML 标记
  11. Django——模板层(template)(模板语法、自定义模板过滤器及标签、模板继承)
  12. 基于 socket.io 的 AI 服务 杂谈
  13. 【面试笔试算法】Program 3 : Complicated Expression(网易游戏笔试题)
  14. LoadRunner Vuser测试脚本添加前置条件举例
  15. Reactor与Proactor比较
  16. git 生成 公钥
  17. Pig distinct用法举例
  18. SQL语句汇总(终篇)—— 表联接与联接查询
  19. bootstrap table 插件 搜索
  20. 如何使用css影藏滚动条

热门文章

  1. Java常见问题收集
  2. 【学习总结】认识MVC
  3. JavaScript——面向对象编程
  4. RabbitMQ ——整体架构
  5. 什么是VPX技术?
  6. Intellij IDEA插件
  7. [数论]原根与指标,BSGS
  8. 【LeetCode】栈 stack(共40题)
  9. Sass--传多个参数
  10. day20 python异常处理 try except