Django的路由系统

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

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

     - path(route, view, kwargs=None, name=None)
- route 是一个 字符串的url规则
- view 是个视图
- kwargs 额外参数,传递给view, 必须是一个字典
- name url的命名
正则表达式 re_path,可以配置需要的格式,如日期等
     - re_path(route, view, kwargs=None, name=None)

     python 中正则表达式的分组命名 : (?<name>pattern)

     例:
re_path(r'students/(?P<year>\d{4})/(?P<mouth>[0-9]|1[0-2])', views.students)
在url中捕获参数,参数的传递在path中配置
     - 在url中捕获参数
在url规则中使用<变量名>可以捕获url中的值
path('index/<变量名(key1)>/<变量名(key2)>', view.index)
变量名还可以使用-连接: <key>-<key> views.py内的函数需要写上参数,需要一一对应
def detail(request, key1, key2) 传递给视图
** 捕获的值是'字符串' 在浏览器输入的时候也是相对应的:127.0.0.1:8000/index/'key1'/'key2'/
路径转换器    - 路径转换器
   例子 <int:pk>
常用的转换器:
- str 匹配除了'/'路径分隔符之外的所有字符串
- int 匹配任意整数
- slug 匹配任意ASCII字符,加上连字符和下划线
- uuid 格式化id
- path 匹配任意非空字符
  例:
  path('index/<(int:key)>/', view.inedex)
django 搜索 url搜索的是什么?
    只搜索路径部分,和参数,已经请求方法(get, post)无关

    同一个url 可以匹配 get,post
包含其他URLconfs,在项目中添加(app 应用)下级urls的方法,include
 include方法
  from django.urls import include path('teacher/', include('teacher.urls')) 同样也可以接受参数,但接受参数后,teacher下面的app都默认接受参数,会影响到views内的函数,也需要添加参数。所以需要谨慎使用。
传递额外参数

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

     path,re_path 方法中,传递一个kwargs的字典参数

     kwargs={key:value} 默认参数

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

HTML模板导入

setting.py中设置模板的导入

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

渲染 views导入

     第一种写法

     from django.template.loader import get_template

     #def index(request):
tp = get_template('teacher/index.html') #获取模板下的文件
html = tp.render() #渲染html页面
return HttpResponse(html) 返回html页面
     第二种写法(快捷方式:推荐)

     from django.shortcuts import render

     #def index(request):
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. node linux

    在linux下安装nodejs 教程:http://my.oschina.net/blogshi/blog/260953 连接linux服务器,supervisor bin/www,断开连接,服务器还 ...

  2. ListView 指定显示最后一行,scrollView显示最底部

    实现方式: 一. mListView.setSelection(adapter.getCount()-1); 二.在ListView的xml添加以下属性: android:stackFromBotto ...

  3. 解决toad中number类型小数位数过长按科学计数法显示的问题

    在toad中->view->option->data->display large number in scientific notation,不选择该选项即可. (在pl/s ...

  4. 解决网页出现 net::ERR_ABORTED 404 (Not Found)问题

    1.在web.config配置文件中添加woff字体的MIME类型 在Web.config中的system.webServer节点添加 <staticContent> <remove ...

  5. bower 安装后 jade 引用404问题

    这个问题困扰我接近2小时,这是我在stackoveflow 上面挖到的 原文地址:http://stackoverflow.com/questions/21821773/configure-node- ...

  6. docker容器备份、恢复和迁移volume方案

    volume作为数据的载体,在很多情况下需要对其中的数据进行备份.迁移或是恢复.下面一docker容器的volume为例,说一下备份的技巧. 我们先建立一个容器vol_simple,该容器在/date ...

  7. Linux系统文件压缩与备份(5)

    在 Linux 系统选有相当多的压缩命令可以使用,这些压缩指令可以让我们更方便的从网上下载大型文件,本章第一节内容我们就来谈谈这个 Linux 系统下常用的几种压缩格式吧. 谈完了压缩后,我们接着来说 ...

  8. 36_并发编程-multiprocess模块

    仔细说来,multiprocess不是一个模块而是python中一个操作.管理进程的包. 之所以叫multi是取自multiple的多功能的意思,在这个包中几乎包含了和进程有关的所有子模块.由于提供的 ...

  9. [Spring]@Autowired,@Required,@Qualifier注解

    @Required注解 @Required注解用于setter方法,表明这个属性是必要的,不可少的,必须注入值 假设有个测试类,里面有name和password两个属性 我给两个属性的setter方法 ...

  10. Nodejs的模块系统

    global对象 浏览器端JavaScript中的全局对象为"window",在浏览器中定义的变量都会成为"window"对象的属性. 不像浏览器端JavaSc ...