URL 的概念及格式:

  URL的引入:客户端:知道了url 就可以去进行访问;

  服务端:设置好了url,别人才能访问到我

  URL :网址(全球统一资源定位符);由 协议,域名(ip port) ,路径,参数,锚点等组成

django路由系统:

  当一个请求到来时:

    1、首先到项目目录下的urls.py(URLconf 根路径配置模块),查找路由规则;

    2、根URLconf模块,里面定义了 urlpatterns 变量

    3、urlpatterns 是一个(django.urls.path, django.urls.re_path 对象)列表

    4、按顺序运行每个 url 模式,在第一个匹配的模式停止

    5、一旦匹配,django 导入并调用给定的视图(views.py 文件)

    6、如果中间出错,或者没有匹配到,返回404

  django 搜索 url 只搜索路径部分,跟参数,与请求方法(get ,post)无关;

path 和 re_path:

  path基本规则:

    path(route, view, kwargs=None, name=None)

      route 是一个字符串的 url 规则

      view 是个视图

      kwargs 额外参数,传递给 view ,必须是一个字典

      name url的命名

在 url 中捕获参数:

  在 url 规则中使用 <变量名> 可以捕获 url 中的值传递给视图 (捕获的值是字符串)

路径转换:

转换器的使用:

1、设置 url:

from django.urls import path 

urlpatterns = [ 
          path('test/<int:xx>',views.test),
        ]

2、在视图中将获取到的参数和参数的类型打印出来:

from django.http import HttpResponse 

def test3(request,xx): 
  print(xx,type(xx))
  return HttpResponse('hello %s'%xx)

  注:同一个试图的变量名 (xx)要一致

常用的转换器:

  str 匹配除了路径分隔符 / 之外的非空字符串,这是默认的形式

  int 匹配正整数,包含0

  slug 匹配字母,数字及横杠,下划线组成的字符串;任意ASCII码

  uuid 匹配格式化的 uuid ,如 075194d3-6885-417e-a8a8-6c931e272f00

  path 匹配任何非空字符串,包含了路径分隔符

re_path 正则匹配:

  格式:

from django.urls import re_path 

urlpatterns = [ re_path(r'test/(?P<变量名>正则),views.test), ]

包含其他的 URLconfs :用 include

  一个project有一个总的urls.py各个app也可以自己建立自己的urls.py用include()函数在project的urls.py文件进行注册

  在根目录的 url 配置文件(urls.py)中添加

传递额外参数:

path,re_path 方法中,传递一个kwargs 的字典参数给视图函数;视图函数可以通过 key 获取到

# 写在主 URL 配置文件会给其路径下的每一个路由都加上该参数: 
from django.urls import path,include urlpatterns = [
  path('test/',include('test1.urls'),kwargs={'key':'value'})
  path('test/',views.test,kwargs={'key':'value'})
  ]

name的作用:

  给一个匹配的 url 地址取名字;一般用于模板,也可以使用 reverse 进行页面重定向

跳转路由:

# views.py 文件里: 

from django.shortcuts import redirect,reverse
def article(request,**kwargs)
return redirect(reverse('new_artivle')) # 这里可以直接使用 刚刚自定义好的 name 值
return redirect('http://www.baidu.com') # 直接填入要跳转的 url return
   redirect('/test/test1/') # 直接填入自定义的路由

  redirect 是重定向,reverse是将 url 的 name 解析成 url 本身的函数

  app_name :

    定义在 app 文件夹下的 urlconf 模块中

    app_name = app 名称

# 当前app 中 urls.py 文件里 

app_name = 'test'
urlpatterns = [ path('test/',views.test,name="xx"), ]
# 当前 app 中 views.py 文件里
from django.shortcuts import redirect,reverse
def test(request):
return redirect(reverse('test:xx'))

  这样可以避免两个不同的 app 定义了一样的 name

  name 参数可以给这个 url 取一个合适的名字,通过给 url 取名字,以后再 view 或者模板中使用这个 url,就只需要使用这个名字就可以了,这样做的原因是防止 url 的规则更改,会导致其他地方用了这个 url 的地方都需要更改,但是如果取名字了,就不要做任何改动了

模板路径配置:

  模板放在哪?

    1、再主目录下创建一个 templates 目录用来存放所有的 html 的模板文件;

    2、templates 目录里面再创建各个以 app 名字命名的目录来存放各个app中的模板文件

setting.py 中的模板路径配置:

将设置好的存放 html 模板的 templates 目录路径添加到 DIRS 中

'DIRS':[os.path.join(BASE_DIR,'templates')],

模板渲染方式:

  1、直接将 html 字符串硬编码 HttpResponse 中

from django.http import HttpResponse 

def test(request):
return HttpResponse('<h1 style="color:red">hello world</h1>')

  2、django.template.loader 定义了函数以加载模板

from django.template.loader import get_template
from django.shortcuts import render
from django.http import HttpResponse def test(request):
t = get_template('test/test.html') # 这里直接写 templates 里的路径
html = t.render()
return HttpResponse(html)

  3、使用 render 进行渲染:

from django.shortcuts import render 

def test(request):
return render(request,'test/test.html') # 这里直接写 templates 里的路径

  render 方法是 django 封装好用来渲染模板的方法很方便,很好用!

Django 学习第二天——URL路由及模板渲染方式的更多相关文章

  1. Django 02 url路由配置及渲染方式

    Django 02 url路由配置及渲染方式 一.URL #URL #(Uniform Resoure Locator) 统一资源定位符:对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是 ...

  2. Django学习手册 - 正则URL路由配置/路由分发

    ############################################### 总结: 一.url路由配置: 方式一:(通过url链接get获取) 方式二:(url路由匹配方式获取-拓 ...

  3. Artech的MVC4框架学习——第二章URL路由

    总结:HttpModule 和HttpHandler是Asp.net管道的两个重要组件.请求最终处理通过HttpHandler完成.MVC就是通过名为MvcHandler自定义HttpHandler现 ...

  4. django中url路由配置及渲染方式

    今天我们学习如何配置url.如何传参.如何命名.以及渲染的方式,内容大致有以下几个方面. 创建视图函数并访问 创建app django中url规则 捕获参数 路径转换器 正则表达式 额外参数 渲染方式 ...

  5. url路由配置以及渲染方式

    路由分配及模板渲染 路由系统 urlpatterns = [ path('admin/', admin.site.urls), path('teacher/',include('teacher.url ...

  6. day 66 Django基础二之URL路由系统

    Django基础二之URL路由系统   本节目录 一 URL配置 二 正则表达式详解 三 分组命名匹配 四 命名URL(别名)和URL反向解析 五 命名空间模式 一 URL配置 Django 1.11 ...

  7. day 53 Django基础二之URL路由系统

    Django基础二之URL路由系统   本节目录 一 URL配置 二 正则表达式详解 三 分组命名匹配 四 命名URL(别名)和URL反向解析 五 命名空间模式 一 URL配置 Django 1.11 ...

  8. Django框架02 /Django下载安装、url路由分发

    Django框架02 /Django下载安装.url路由分发 目录 Django框架02 /Django下载安装.url路由分发 1. django下载安装 2. pycharm创建项目 3. 基于D ...

  9. 02-url路由分配及模板渲染方式

    本章主要内容 1.url基本概念及格式 2.path和re_path 3.模板路径配置 4.模板渲染方式 1.url基本概念及格式 URL(uniform Resoure Locator)统一资源定位 ...

随机推荐

  1. Android关于RAM、ROM、SD卡以及各种内存的区别

    RAM:运行时内存.相当于PC机的内存存储,用于存储应用运行时的各种对象和变量常量等,主要作用在于提高运行速度.是唯一一种断电后数据会清除的存储器. 机身内存:相当于PC机硬盘.主要包括三块区域:RO ...

  2. 原 layer父子页面交互

    1.访问父页面元素值 2.访问父页面方法 3.如何关闭弹出的子页面窗口 parent.layer.close(index);//关闭弹出的子页面窗口 4.如何从子页面执行刷新父页面操作 [javasc ...

  3. 记一次Win Server 2012部署问题及解决方法

    1.前言 本章内容为在win server 2012服务器部署时遇到的问题及解决方法.大致工作为:两台服务器,一台web.一台数据库:web服务器部署.net web程序,数据库服务器安装oracle ...

  4. MySQL— 索引

    目录 一.索引 二.索引类型 三.索引种类 四.操作索引 五.创建索引的时机 六.命中索引 七.其它注意事项 八.LIMIT分页 九.执行计划 十.慢查询日志 一.索引 MySQL索引的建立对于MyS ...

  5. Word打开默认显示缩略图,而不是文档结构图

    So easy! 1.打开Word文档,点击缩略图右侧的"X",关闭缩略图: 2.打开菜单[视图],勾选"文档结构图": 3.关闭当前Word文档: 4.再次打 ...

  6. Epoll模型

    Epoll模型 相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率.因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多.并且,在l ...

  7. Nodejs+定时截图+发送邮件

    功能 每天定时截图,并把截到的图片自动通过邮件发送. 说明 代码注释已经非常详细,就不多做说明,需要的朋友自己查看代码即可,主文件Mail.js,截图文件capturePart1.js,capture ...

  8. 015_NGINX作为WebSocket Proxy的设置

    产研那边有通过nginx代理进行长连接的需求,咱们都知道默认nginx只支持短连接的,使用长连接需要单独配置 一. websocket协议提供创建一种支持在server和client之前双向通信的we ...

  9. cactiez v11添加对mysql数据库、apache系统进行监控

    cactiez默认已经安装了mysql监控的模板,需要我们对服务器端和被监控的mysql客户端进行配置才能生效. 被监控的Mysql客户端: 如cactiez的IP为192.168.0.8 #添加一个 ...

  10. CentOs 6.6里kdump启动失败的原因

    在VMware中新安装了CentOs 6.6,重启系统发现kdump服务启动失败 先来说一下,什么是kdump kdump 是一种先进的基于 kexec 的内核崩溃转储机制.当系统崩溃时,kdump ...