path 基本规则
- 使用尖括号(<>)从url中捕获值。
- 包含一个转化器类型(converter type)
- 没有转化器,将匹配任何字符串,当然也包括了 / 字符
path('test/<xx>/<yy>&zz',views.test)
- 参数名要和视图中的参数一致
默认支持的转换器
- str,匹配除了路径分隔符(/)之外的非空字符串,这是默认的形式
- int,匹配正整数,包含0
- slug,匹配字母、数字以及横杠、下划线组成的字符串
- uuid,匹配格式化的uuid,如 075194d3-6885-417e-a8a8-6c931e272f00
- path,匹配任何非空字符串,包含了路径分隔符
re_path正则匹配
- 导入:from django.urls import re_path
re_path('^hello/(?P<yy>[0-9]+)/',views.test6)
include的作用
- 一个project有一个总的urls.py
- 各个app也可以自己建立自己的urls.py
- 用include()函数在project的urls.py文件进行注册
path('blog/',include('blog.urls'))
kwargs的作用
- 传递一个Python 字典作为额外的参数传递给视图函数
- Kwargs为字典类型
- 可以传递额外的参数到views中,views中使用
**kwargs
接收 - 使用include的时候
- 需要统一给下面的url一些参数的时候、显得尤其有用
- 可以传递额外的参数到views中,views中使用
path('blog/',include('blog.urls'),{'name':'JiYu','age':1})
name的作用
- 给url取个名字
path('article_new/',views.article_new,name='articleNew')
- redirect是重定向,reverse是将url的name解析成url本身的函数
- 直接重定向:
return redirect('/books/article_new')
- 使用name:
return redirect(reverse('articleNew'))
- 直接重定向:
模板渲染
- 模板放在哪
- 在主目录下创建一个templates目录用来存放所有的html的模板文件
- templates目录里面再新建各个以app名字命名的目录来存放各个app中模板文件
- setting.py中的模板路径配置
- 将设置好的存放html模板的templates目录路径添加到TEMPLATES 的DIRS中
- 'DIRS': [os.path.join(BASE_DIR,'templates')],
- 三种渲染方式
- 1.直接将html字符串硬编码HttpResponse中
return HttpResponse('<h1>hello Django</h1>')
- 2.django.template.loader 定义了函数以加载模板
- 导入包:
from django.template.loader import get_template
s=get_template('books/book_index.html') #获取模板
html=s.render({'name':'JiYu'}) #渲染页面
return HttpResponse(html)
- 导入包:
- 3.使用render进行渲染
return render(request,'book/book_index.html',context={'name':'JiYu','area':'blog'})
- 1.直接将html字符串硬编码HttpResponse中
- 模板路径配置总结
- 在配置文件setting.py中找到TEMPLATES设置来配置
- 这是一个设置选项的列表,模板大都包含两项通用设置;两种方式配置模板
- 第一种: DIRS 定义一个目录列表,模板引擎按列表顺序搜索这些目录以查找模板源文件。将templates放在主项目目录下
- 第二种: APP_DIRS告诉模板引擎是否应该进入每个已安装的应用中查找模板,值为True则模板会去安装了的app下面的templates文件夹查找模板。
- 所以我们也可以在每个app的里面创建模板目录templates存放模板,这种方式需要将这个app添加到setting.py文件的INSTALLED_APPS列表中.