Django Url路由及模板渲染方式

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一些参数的时候、显得尤其有用
  • 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'})
  • 模板路径配置总结
    • 在配置文件setting.py中找到TEMPLATES设置来配置
    • 这是一个设置选项的列表,模板大都包含两项通用设置;两种方式配置模板
      • 第一种: DIRS 定义一个目录列表,模板引擎按列表顺序搜索这些目录以查找模板源文件。将templates放在主项目目录下
      • 第二种: APP_DIRS告诉模板引擎是否应该进入每个已安装的应用中查找模板,值为True则模板会去安装了的app下面的templates文件夹查找模板。
      • 所以我们也可以在每个app的里面创建模板目录templates存放模板,这种方式需要将这个app添加到setting.py文件的INSTALLED_APPS列表中.
posted @ 2021-07-14 09:57  三个零  阅读(155)  评论(0编辑  收藏  举报