Django的路由系统

当一个请求来到时
  1. 当一个请求来到时
  2. 1、首先到项目目录下的urls.py(根URLconf模块)中,查找路由规则;
  3. 2、根URELcof模块,里面定义了 urlpatterns 变量;
  4. 3urlpatterns是一个(django.urls.path, dango.urls.re_path 对象)列表;
  5. 4、按顺序运行没个url模式,在第一个匹配的模式停止;
  6. 5、一旦匹配,django导入并调用给定的视图;
  7. 6、如果中间出错,或者没有匹配到,返回404
path方法,及默认参数

默认参数需要配置的是路由(route),视图(view),kwargs和name是可选参数

  1. - path(route, view, kwargs=None, name=None)
  2. - route 是一个 字符串的url规则
  3. - view 是个视图
  4. - kwargs 额外参数,传递给view 必须是一个字典
  5. - name url的命名
正则表达式 re_path,可以配置需要的格式,如日期等
  1. - re_path(route, view, kwargs=None, name=None)
  2.  
  3. python 中正则表达式的分组命名 (?<name>pattern)
  4.  
  5. 例:
  6. re_path(r'students/(?P<year>\d{4})/(?P<mouth>[0-9]|1[0-2])', views.students)
在url中捕获参数,参数的传递在path中配置
  1. - url中捕获参数
  2. url规则中使用<变量名>可以捕获url中的值
  3. path('index/<变量名(key1)>/<变量名(key2)>', view.index)
  4. 变量名还可以使用-连接: <key>-<key>
  5.  
  6. views.py内的函数需要写上参数,需要一一对应
  7. def detail(request, key1, key2)
  8.  
  9. 传递给视图
  10. ** 捕获的值是'字符串'
  11.  
  12. 在浏览器输入的时候也是相对应的:127.0.0.1:8000/index/'key1'/'key2'/
路径转换器    - 路径转换器
  1. 例子 <int:pk>
  2. 常用的转换器:
  3. - str 匹配除了'/'路径分隔符之外的所有字符串
  4. - int 匹配任意整数
  5. - slug 匹配任意ASCII字符,加上连字符和下划线
  6. - uuid 格式化id
  7. - path 匹配任意非空字符
  8.   例:
  9.   path('index/<(int:key)>/', view.inedex)
django 搜索 url搜索的是什么?
  1. 只搜索路径部分,和参数,已经请求方法(get post)无关
  2.  
  3. 同一个url 可以匹配 getpost
包含其他URLconfs,在项目中添加(app 应用)下级urls的方法,include
  1. include方法
  2.   from django.urls import include
  3.  
  4. path('teacher/', include('teacher.urls'))
  5.  
  6. 同样也可以接受参数,但接受参数后,teacher下面的app都默认接受参数,会影响到views内的函数,也需要添加参数。所以需要谨慎使用。
传递额外参数

当kwargs中的key与url捕获中的key一致的时候,以kwargs为准

  1. pathre_path 方法中,传递一个kwargs的字典参数
  2.  
  3. kwargs={keyvalue} 默认参数
  4.  
  5. *****当kwargs中的keyurl捕获中的key一致的时候,以kwargs为准*****
  6. 如果是在项目主目录下的urlsinclude里添加,则是给项目下的某个app下面的所有urls添加额外默认参数
  7.  
  8. include同上代码
  9. path('teacher/', include('teacher.urls'),kwargs={'key':'value'}
url命名,重定向
  1. from django.shortcuts import render, redirect, reverse
  2. views.py文件内操作
  3.  
  4. 重定向
  5. 在函数内返回: return redirect('http://www.baidu.com')
  6. 跳转
  7. return redirect('/teacher/index/') 硬编码
  8.  
  9. urls文件内path内定义name参数
  10. path('home/', views.index, name='index')
  11.  
  12. 动态解析重定向
  13. views文件函数内需要添加一个变量
  14.  
  15. url = reverse('index') 关键操作只要reverse的内容正确,url内的path内的路径可以动态变动
  16. return redirect(url)
  1. app_name
  2. 模块内的命名,防止混淆,写在urls文件内
  3. app_name = 'teacher'
  4. views文件内的函数内添加或者修改reverse
  5. def login(request):
  6. url = reverse('teacher:index')
  7.  
  8. 重定向
  9. redirect(url)

HTML模板导入

setting.py中设置模板的导入

  1. TEMPLATES中的 'DIRS':[os.path.join(BASE_DIR,'templates(html模板位置的文件夹名)']

渲染 views导入

  1. 第一种写法
  2.  
  3. from django.template.loader import get_template
  4.  
  5. #def index(request):
  6. tp = get_template('teacher/index.html') #获取模板下的文件
  7. html = tp.render() #渲染html页面
  8. return HttpResponse(html) 返回html页面
  1. 第二种写法(快捷方式:推荐)
  2.  
  3. from django.shortcuts import render
  4.  
  5. #def index(request):
  6. return render(request, 'teacher/index.html')

此处完,谢谢观看……

python的Web框架:Django路由系统以及模板导入的更多相关文章

  1. Python之Web框架Django

    Python之Web框架: Django 一. Django Django是一个卓越的新一代Web框架 Django的处理流程 1. 下载地址  Python 下载地址:https://www.pyt ...

  2. Python3.5学习十八 Python之Web框架 Django

    Python之Web框架: 本质:Socket 引用wsgiref创建web框架 根据web框架创建过程优化所得: 分目录管理 模板单独目录 执行不同函数单独存入一个方法py文件 Web框架的两种形式 ...

  3. Python 17 web框架&Django

    本节内容 1.html里面的正则表达式 2.web样式简介 3.Django创建工程 Html里的正则表达式 test 用来判断字符串是否符合规定的正则       rep.test('....')  ...

  4. python三大web框架Django,Flask,Flask,Python几种主流框架,13个Python web框架比较,2018年Python web五大主流框架

    Python几种主流框架 从GitHub中整理出的15个最受欢迎的Python开源框架.这些框架包括事件I/O,OLAP,Web开发,高性能网络通信,测试,爬虫等. Django: Python We ...

  5. Python编程Web框架 :Django 从入门到精通

    Django是一个高级别的Python Web框架,它鼓励快速开发和干净实用的设计. 现在我们开始学习它. Django学习之 第一章:Django介绍 Django学习之 第二章:Django快速上 ...

  6. python的web框架---Django项目

    Django项目之会议室预预订: 界面效果展示: 1.创建超级管理员,实现预定界面功能 2.预定界面: (一)基于pymysql设计数据表结构,理清前后端与用户交互逻辑.(用户表,会议室表,预定内容存 ...

  7. 在python的web框架Django中使用SQL Server

    在pycharm中安装 安装pyodbc和Django——pyodbc是一个用python写的ODBC引擎 安装Django-pyodbc-azure                  在后方网址中查 ...

  8. python 学习笔记十六 django深入学习一 路由系统,模板,admin,数据库操作

    django 请求流程图 django 路由系统 在django中我们可以通过定义urls,让不同的url路由到不同的处理函数 from . import views urlpatterns = [ ...

  9. python运维开发(十七)----jQuery续(示例)web框架django

    内容目录: jQuery示例 前端插件 web框架 Django框架 jQuery示例 dom事件绑定,dom绑定在form表单提交按钮地方都会绑定一个onclick事件,所有查看网站的人都能看到代码 ...

随机推荐

  1. 一致性hash(整理版)

    简单解释: 简单解释一致性hash的原理:网上通篇都是用服务器做的举例,我这里也如此,主要是便于理解. 通常:有N个客户端请求服务器,假设有M台web服务器,通常为了均衡访问会进行N%M的取模,然后分 ...

  2. 关于质能等效的两个思想实验 Two Ideological Experiments on Mass-Energy Equivalence

    大家知道,物质和能量是等效的,虽然质能方程已暗示了这种等效关系,但并非显而易见.此等效性可以从以下两个思想实验中获知. 实验一:一台电子称上放置一个金属物体,加热它,称的读数将会略微增加.这是因为金属 ...

  3. MySQL1安装

    ---恢复内容开始--- (1)安装MySQL ①ZIP安装 ②MSI安装(Windows Installer) Ⅰ  先从官网下载 目前选择使用Typical安装↑ 目前不勾选配置选项↑ 找到配置向 ...

  4. “全栈2019”Java多线程第三十三章:await与signal/signalAll

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

  5. python项目实现配置统一管理的方法

    一个比较大的项目总是会涉及到很多的参数,最好的方法就是在一个地方统一管理这些参数.最近看了不少的python项目,总结了两种很有意思的配置管理方法. 第一种 基于easydict实现的配置管理 首先需 ...

  6. spring-boot集成thymeleaf。

    thymeleaf是前台页面展示,原来一直是jsp,jsp中包含很多服务器端的逻辑,逐渐淘汰.同样功能的还有freemarker.孰好孰坏不予评价,只做简单实现. 1.基本思路 (1)pom.xml中 ...

  7. 【小程序开放激励视频】--wepy小程序添加激励视频

    小程序开放激励视频是对小程序开发者一个福音,小程序开发者可以完成一些变现,以增加收入! 本文章针对已经有开发经验或者正在进行小程序开发的同学~ 官方文档:激励视频广告 定义页面变量,用于创建视频实例 ...

  8. 解放双手 | Jenkins + gitlab + maven 自动打包部署项目

    前言 记录 Jenkins + gitlab + maven 自动打包部署后端项目详细过程! 需求背景 不会偷懒的程序员不是好码农,传统的项目部署,有时候采用本地手动打包,再通过ssh传到服务器部署运 ...

  9. Vue, React, AngularJS, and Angular2. 我们对流行JavaScript框架们的选择

    2017-08-04 前端大全 (点击上方公众号,可快速关注) 英文:ANTONI ZOLCIAK  译文:众成翻译 www.zcfy.cc/article/vue-react-angularjs-a ...

  10. 写一个MySql存储过程实现房贷等额本息还款计算(另外附javascript代码)

    写一个MySql存储过程实现房贷等额本息还款计算 MySql存储过程代码如下: DROP procedure IF EXISTS `calc_equal_interest_proc`; DELIMIT ...