Django 学习第二天——URL路由及模板渲染方式
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路由及模板渲染方式的更多相关文章
- Django 02 url路由配置及渲染方式
Django 02 url路由配置及渲染方式 一.URL #URL #(Uniform Resoure Locator) 统一资源定位符:对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是 ...
- Django学习手册 - 正则URL路由配置/路由分发
############################################### 总结: 一.url路由配置: 方式一:(通过url链接get获取) 方式二:(url路由匹配方式获取-拓 ...
- Artech的MVC4框架学习——第二章URL路由
总结:HttpModule 和HttpHandler是Asp.net管道的两个重要组件.请求最终处理通过HttpHandler完成.MVC就是通过名为MvcHandler自定义HttpHandler现 ...
- django中url路由配置及渲染方式
今天我们学习如何配置url.如何传参.如何命名.以及渲染的方式,内容大致有以下几个方面. 创建视图函数并访问 创建app django中url规则 捕获参数 路径转换器 正则表达式 额外参数 渲染方式 ...
- url路由配置以及渲染方式
路由分配及模板渲染 路由系统 urlpatterns = [ path('admin/', admin.site.urls), path('teacher/',include('teacher.url ...
- day 66 Django基础二之URL路由系统
Django基础二之URL路由系统 本节目录 一 URL配置 二 正则表达式详解 三 分组命名匹配 四 命名URL(别名)和URL反向解析 五 命名空间模式 一 URL配置 Django 1.11 ...
- day 53 Django基础二之URL路由系统
Django基础二之URL路由系统 本节目录 一 URL配置 二 正则表达式详解 三 分组命名匹配 四 命名URL(别名)和URL反向解析 五 命名空间模式 一 URL配置 Django 1.11 ...
- Django框架02 /Django下载安装、url路由分发
Django框架02 /Django下载安装.url路由分发 目录 Django框架02 /Django下载安装.url路由分发 1. django下载安装 2. pycharm创建项目 3. 基于D ...
- 02-url路由分配及模板渲染方式
本章主要内容 1.url基本概念及格式 2.path和re_path 3.模板路径配置 4.模板渲染方式 1.url基本概念及格式 URL(uniform Resoure Locator)统一资源定位 ...
随机推荐
- mysql 案例 ~ pt校验工具介绍
简介:今天咱们来聊聊PT校验工具pt-table-checksum 注意事项: 1. 根据测试,需要一个即能登录主库,也能登录从库的账号: 2. 只能指定一个host,必须为主库的IP: ...
- TIdHTTP get参数带中文解决方法--请求报文
Post 看起来稍微复杂先,暂不讨论.post 目前按照一般方法有中文名也可以. 拼接时:pointname=九记餐厅&begintime=2017-03-01 00:00:00& 有 ...
- openwrt 分区
下面以ar9344 16M flash为例子: uboot启动时传递给内核的参数为: bootargs=console=ttyS0,115200 root=31:02 rootfstype=jffs2 ...
- Android手机刘海屏(附工具类)
工具类 根据VIVO.OPPO.华为官方文档,这里整理了一个刘海屏工具类,判断设备是否为刘海屏,其他厂商公布相关方法后也会在此更新. OPPO: /** * OPPO * * @param conte ...
- TOMCAT服务器配置域名
最近做了个网站,用的是web'服务器是tomcat,框架式SpringMVC,功能做好后,就准备上线使用了, 手上已经有域名以及一台服务器,已经绑定好ip了,剩下的也就是配置Tomcat了,比较简单, ...
- Uiautomator之入门
优点:1.可以对所有操作进行自动化,操作简单: 2.不需要对被测程序进行重签名,且,可以测试所有设备上的程序,比如~某APP,比如~拨号,比如~发信息等等 3.对于控件定位,要比robotium ...
- log4j2配置文件log4j2.xml
原地址:https://www.cnblogs.com/hafiz/p/6170702.html 1.关于配置文件的名称以及在项目中的存放位置 log4j 2.x版本不再支持像1.x中的.proper ...
- PYTHON-流程控制之if/while/for-练习
# 1 练习题## 简述编译型与解释型语言的区别,且分别列出你知道的哪些语言属于编译型,哪些属于解释型# 编译型:C, 谷歌翻译,一次翻译后结果后重复使用# 解释型:Python, 同声传译,边执行边 ...
- notepad++ 快捷键大全、notepad常用快捷键
Notepad++ 快捷键 大全, notepad++也情有独钟,最近发现了一个快捷键,就是选中单词,ctrl+shift+enter.不过现在想知道一个快捷键,假设有三行代码,选中后一般按TAB就可 ...
- 多CPU,多核,多进程,多线程
当面临这些问题的时候,有两个关键词无法绕开,那就是并行和并发. 首先,要先了解几个概念: 1.进程是程序的一次执行. 2.进程是资源分配的基本单位(调度单位). 3.一个进程可以包括多个线程. 4.在 ...