3/19 Django框架 url路由配置及模板渲染
1.路由分配
URL(Uniform Resoure Locato):统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。
https://docs.pythontab.com:443/django/django1.5/intro/overview.html#model
协议 域名(IP地址和端口) 路径 锚点
urlpatterns : 路由模式
项目文件下的叫根配置文件
url.py
: UrlConf模块(url配置模块)
path函数(route, view, kwargs=None, name=None)
- route是一个字符串url规则
- view是一个试图,是一个函数,不加括号
- kwargs:额外的参数,是一个字典
- name:url规则的名字
在url中捕获参数
例如要获取某个学生的详情 需要在数据库中通过主键id唯一标识这个学生
通过<>捕获参数 转换器int: (int:)
转换器
pk传进去的时候会转换类型
- str: 匹配除了路径分隔符'/'之外所有的字符串,如果不写转换器,默认是字符串转换器
- int: 匹配0或任何正整数
- slug: 匹配任意的ASCII字符或数字组成的slug字符串,连字符和下划线
- path: 匹配任何非空字符串,包括路径分隔符‘/’
使用正则表达式
re_path(route,view,kwargs=None,name=None)
注:用正则表达式匹配到的参数会转换成字符串类型
url命名
重定向
导入django.shortcuts.redirectreturn redirect('')
命名:在路由模式中加入name = ''可以给路径命名
使用的时候导入django.shortcuts.reverse
使用reverse('')
如果在不同APP下路径的命名相同,就需要在每个APP的urls.py下设置一个变量
app_name = '<app_name>',命名就可以写成reverse('<app_name>:'),
以便区分不同的视图
2.模板系统
项目根目录下新建一个templates文件夹,再在templates文件夹下新建APP文件夹,用来存放不同应用下的模板
项目目录下的settings.py里有一个叫TEMPLATES的列表,里面嵌套了一个字典,是用来配置模板路径的。将BASE_DIR(项目根目录)与路径拼接,放到DIRS的值里去'DIRS':[os.path.join(BASE_DIR, 'templates')]
from django.template.loader import get_template
t = get_template('teacher/index.html')
html = t.render()
return HttpResponse(html)
# 就等同于
return render(request, 'teacher/index.html')