文章目录

  • 一、路由系统(URL)
  • 二、视图函数(views)

一、路由系统(URL)

1、URL配置 (URLconf)就像Django 所支撑网站的目录。它的本质是URL模式以及要为该URL模式调用的视图函数之间的映射表。
简单来说,我们就是用这种方式告诉Django,对于这个URL调用这段代码,对于那个URL调用那段代码。

urlpatterns = [url(正则表达式, views视图函数,参数,别名),
]
  • 正则表达式:url路径的正则
  • views视图函数:通常为一个视图函数或一个指定视图函数路径的字符串
  • 参数:可选的要传递给视图函数的默认参数(字典形式)
  • 别名:可选的name参数,其他地方调用都是用的别名

2、例如:

from django.conf.urls import url
from . import viewsurlpatterns = [url(r'^blog/(?P<year>[0-9]{4})/$', views.year_archive, {'jiu': 'ok'}),
]

3、无名分组

 url('article/(\d{4})/(\d{2})', views.article_year),# 表示article后可匹配任意4个数字,都能打开该页面# 加()将正则内容分组,就可以获取到对应的值了,就是说页面的网址也会跟着变成输入的那4个数字# 简单来说就是一个分组会对应article_year函数的一个参数

4、有名分组

# 有名分组:分别起名为year和month,这样对应的形参也必须同名url(r'article/(?P<year>\d{4})/(?P<month>\d{2})', views.article_year),url(r'register/', views.register, name="reg"),  # reg是这个地址的别名,在其他文件里都可以使用

5、路由分发(include)

# 自动路由分发,要导入includepath('blog/', include('blog.urls')),# 名字为urls,因此需要在blog目录下建立一个urls文件,将这些需要分发到一堆的路径都粘贴进去# 意思就是以blog开头的内容,全都到blog.urls里面去找

二、视图函数(views)

1、http请求 中产生两个核心对象:

  • http请求:HttpRequest对象
  • http响应:HttpResponse对象

2、HttpRequest(请求)的属性和方法

  • path:请求页面的全路径,不包括域名
  • method: 请求中使用的HTTP方法的字符串表示。全大写表示
if  req.method=="GET":do_something()elseif req.method=="POST":do_something_else()
  • GET: 包含所有HTTP GET参数的类字典对象
  • POST: 包含所有HTTP POST参数的类字典对象
    服务器收到空的POST请求的情况也是可能发生的,也就是说,表单form通过

HTTP POST方法提交请求,但是表单中可能没有数据,因此不能使用
if req.POST来判断是否使用了HTTP POST 方法;应该使用 if req.method==“POST”

  • COOKIES:包含所有cookies的标准Python字典对象;keys和values都是字符串
  • FILES:包含所有上传文件的类字典对象,FILES中的每一个Key都是标签中的
    (1)filename: 上传文件名,用字符串表示
    (2)content_type: 上传文件的Content Type
    (3)content: 上传文件的原始内容
  • user:代表当前登陆的用户
  • session:唯一可读写的属性,代表当前会话的字典对象;自己有激活Django中的session支持时该属性才可用
  • request.POST.getlist(’’):常用获取内容的方法

3、HttpResponse(响应)
对于HttpRequest对象来说,是由django自动创建的,但是,HttpResponse对象就必须我们自己创建。
每个view请求处理方法必须返回一个HttpResponse对象,HttpResponse类在django.http.HttpResponse中。

  • 页面渲染:render(常用)、render_to_response(少用)
 return render(req, "index.html", locals())# 参数:请求对象,要返回的页面,返回前端的全部键值对——这里表示{"time":t}
  • 页面跳转:redirect(“路径”)
     user = req.POST.get("user")if user=="zahuw":return redirect("/login/")# 就相当于是http://127.0.0.1:8080/login/# 若改成:return redirect("login.html")# 这样跳转到页面url不会变,仍然是原来的url,一刷新就回到原来的页面了
  • 将函数中所有的变量传给模板:locals()
 # return render(req,"index.html",{"action":li,"d":dic,"c":ani})  # 手动列出来return render(req,"index.html",locals())  # 全部获取

Python框架篇之Django(路由系统URL、视图函数views)相关推荐

  1. django目录下的路由系统和视图函数

    一.Django路由系统(url) 1.什么是路由系统 路由系统的本质是URL模式以及要为该URL模式调用的视图函数之间的一个映射表即不同的url路径对应的不同的函数,该路由系统是存放在全局配置文件u ...

  2. Python的web框架Django(1):HTTP、简介、静态文件配置、路由系统、视图函数、模板语言、ORM、Ajax、分页器、forms、Cookie、Session、中间件、ModelForm

    1. HTTP协议 1)HTTP请求协议 请求格式 POST(方法) /form/entry(URI) HTTP/1.1(协议版本) HOST:hackr.jp(服务端地址) Connection:k ...

  3. Python框架篇之Django(基本流程、命令行、配置文件)

    文章目录 一.总述 二.Django的实现流程 三.django的命令行 四.配置文件(settings) 1.MEDIA_ROOT和MEDIA_URL 2.STATIC_ROOT和STATIC_UR ...

  4. Python框架篇之Django(Django项目搭建全过程、Web框架与Django)

    文章目录 一.Web框架与Django本质 二.从安装到实现一个完整的Django项目 一.Web框架与Django本质 1.Web框架的理解 框架,特指为解决一个开放性问题而设计的具有一定约束性的支 ...

  5. Python框架篇之Django(Template模版:标签tag、自定义filter、extend模板继承)

    文章目录 一.标签的使用(tag) 二.自定义filter和simple_tag 三.extend模板继承 一.标签的使用(tag) 1.语法格式:{% tags %} 2.提供的几种标签 {% if ...

  6. Python框架篇之Django(ORM对象关系映射)

    文章目录 一.认识ORM 二.模型常用字段类型 三.数据表的增删改查 四.配置日志 一.认识ORM 1.概念:简单来说,就是用面向对象的方式去操作数据库的创建表以及增删改查等操作. 2.ORM的优点 ...

  7. Python框架篇之Django(Template基础:模板语法、过滤器filter)

    文章目录 一.Template介绍 二.模板语法 三.过滤器(filter) 一.Template介绍 Python 代码编写和 HTML 设计是两项不同的工作,大多数专业的网站开发环境都将他们分配给 ...

  8. Python框架篇之Django(Models数据表的创建、数据库配置)

    文章目录 一.数据库的配置 二.Models数据表的创建 三.在Pycharm中显示 一.数据库的配置 1. django默认支持 sqlite,mysql, oracle,postgresql数据库 ...

  9. Python框架篇之Django(Models的多表操作)

    一对多 1.添加记录 #publish_id=2Book.objects.create(name="Python进阶",price=77,pub_date="2019-1 ...

最新文章

  1. 判断一个图是否为树(有向图以及无向图)
  2. linux truss strace ltrace 对比 诊断调试程序
  3. 怎么将html字符串转换成标签并展示,将字符串转为html标签-续
  4. CiscoOSPF的选路原理
  5. java编译命令带参数_java编译命令基础知识点
  6. 信息学奥赛一本通(1163:阿克曼(Ackmann)函数)
  7. unix 网络编程总结 二
  8. 符号常量和变量有什么区别_JVM是什么?
  9. python创建一个csv文件_Python程序中用csv模块来操作csv文件的基本使用教程
  10. Wintel机器代码反反转练习(C/C++逆向)
  11. 360视频:旋转球面投影RSP
  12. 揭秘 | 2021年移动云API大赛决赛大奖花落谁家?
  13. D. Berserk And Fireball(Educational Codeforces Round 91 (Rated for Div. 2))
  14. 拍视频到底用手机还是相机好?
  15. Java打印表格 Console/控制台
  16. 专家警告全球芯片短缺可能持续到 2022 年之后
  17. 开发一个可以查询并显示数据库内容的微信小程序
  18. HTTP HTTPS SSL TLS
  19. mysql compact_[MySQL]InnoDB行格式剖析_MySQL - compact
  20. 自己学习c++过程中写下的笔记,只做基础了解使用

热门文章

  1. 北京小学 计算机派位,北京小升初电脑派位原理详解!和对口直升入学有什么区别?...
  2. 华为新系统鸿蒙和ios,鸿蒙系统呼之欲出 华为上线新功能和苹果iOS相比如何
  3. android studio建数据库表,在android studio中创建表
  4. android旋转角度,android 旋转角度总结
  5. python 参数收集_Python参数传递及收集机制原理解析
  6. oracle 的wecate函数,1.Oracle中decode()函数用法
  7. python字典如何删除数据库,如何从python字典中删除?
  8. 系统集成的系统架构图的相关的vsd素材_信息系统集成专业技术知识:软件架构...
  9. android调用日历库,Android学习教程之日历库使用(15)
  10. 有谁转行学java成功了的吗_毕业五六年转行学java可以吗,还能学会吗?