python学习点滴记录-Day17-django-part2

  • url配置系统之无名分组
  • url配置系统之有名分组
  • url配置系统之分发app
  • url配置系统之url反向解析
  • 视图函数之请求对象
  • 视图函数之响应对象
  • 模板语法之渲染变量
  • 模板语法之变量过滤器
  • ORM
URL配置(URLconf)就像Django 所支撑网站的目录。它的本质是URL与要为该URL调用的视图函数之间的映射表;你就是以这种方式告诉Django,对于这个URL调用这段代码,对于那个URL调用那段代码。

    ‘‘‘

    urlpatterns = [
         url(正则表达式, views视图函数,参数,别名),
]

参数说明:

    一个正则表达式字符串
    一个可调用对象,通常为一个视图函数或一个指定视图函数路径的字符串
    可选的要传递给视图函数的默认参数(字典形式)
    一个可选的name参数

    ‘‘‘

2.1 URLconf的正则字符串参数

2.1.1 简单配置

from django.conf.urls import url

from . import views

urlpatterns = [
    url(r‘^articles/2003/$‘, views.special_case_2003),
    url(r‘^articles/([0-9]{4})/$‘, views.year_archive),
    url(r‘^articles/([0-9]{4})/([0-9]{2})/$‘, views.month_archive),
    url(r‘^articles/([0-9]{4})/([0-9]{2})/([0-9]+)/$‘, views.article_detail),
]


    ‘‘‘
    NOTE:
    1 一旦匹配成功则不再继续
    2 若要从URL 中捕获一个值,只需要在它周围放置一对圆括号。
    3 不需要添加一个前导的反斜杠,因为每个URL 都有。例如,应该是^articles 而不是 ^/articles。
    4 每个正则表达式前面的‘r‘ 是可选的但是建议加上。

一些请求的例子:

    /articles/2005/3/ 不匹配任何URL 模式,因为列表中的第三个模式要求月份应该是两个数字。
    /articles/2003/ 将匹配列表中的第一个模式不是第二个,因为模式按顺序匹配,第一个会首先测试是否匹配。
    /articles/2005/03/ 请求将匹配列表中的第三个模式。Django 将调用函数
                       views.month_archive(request, ‘2005‘, ‘03‘)。
    ‘‘‘

#设置项是否开启URL访问地址后面不为/跳转至带有/的路径
APPEND_SLASH=True

2.1.2 有名分组(named group)

上面的示例使用简单的、没有命名的正则表达式组(通过圆括号)来捕获URL 中的值并以位置 参数传递给视图。在更高级的用法中,可以使用命名的正则表达式组来捕获URL 中的值并以关键字 参数传递给视图。

在Python 正则表达式中,命名正则表达式组的语法是(?P<name>pattern),其中name 是组的名称,pattern 是要匹配的模式。

下面是以上URLconf 使用命名组的重写:

from django.conf.urls import url

from . import views

urlpatterns = [
    url(r‘^articles/2003/$‘, views.special_case_2003),
    url(r‘^articles/(?P<year>[0-9]{4})/$‘, views.year_archive),
    url(r‘^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/$‘, views.month_archive),
    url(r‘^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/(?P<day>[0-9]{2})/$‘, views.article_detail),
]

这个实现与前面的示例完全相同,只有一个细微的差别:捕获的值作为关键字参数而不是位置参数传递给视图函数。例如:

    /articles/2005/03/        请求将调用views.month_archive(request, year=‘2005‘, month=‘03‘)函数    /articles/2003/03/03/     请求将调用函数views.article_detail(request, year=‘2003‘, month=‘03‘, day=‘03‘)。

在实际应用中,这意味你的URLconf 会更加明晰且不容易产生参数顺序问题的错误 —— 你可以在你的视图函数定义中重新安排参数的顺序。当然,这些好处是以简洁为代价;有些开发人员认为命名组语法丑陋而繁琐。

时间: 2024-10-26 10:23:02

python学习点滴记录-Day17-django-part2的相关文章

python学习点滴记录-Day20(分页、cookie/session、ajax)

上节课内容回顾:ORM增删改查 Django提供的分页器使用以及分析讲解 Cookie和session讲解与在Django中的使用 ajax的讲解与简单使用 Django分页器(paginator) 要使用Django实现分页器,必须从Django中导入Paginator模块 from django.core.paginator import Paginator 假如现在有150条记录要显示,每页显示10条 >>> from django.core.paginator import Pa

python学习点滴记录-Day01

参考链接 https://triaquae.gitbooks.io/python/content/chapter1.html 一.python的安装 1.windows平台的到python官网下载windows版本安装介质,按照提示安装完毕即可使用. 2.linux平台的可以通过yum或者python官网下载tar包进行安装. 无论是windows还是linux下,为了方便使用,建议添加到环境变量中. windows:计算机属性--高级系统设置--系统--环境变量--PATH中添加python的

python学习点滴记录-Day18-django-orm

第18天课程内容: 模板语言的常用标签 自定义过滤器与标签 模板语言之继承 ORM的查询API 单表查询之双下划线 一对多的添加数据方法 mtv补充 修改pycharm连接db为mysql时遇到的问题 解决: 在项目的__init__.py文件中加 import pymysql pymysql.install_as_MySQLdb() post提交表单数据时,默认会提示403 forbidden,需要在form表单处添加{% csrf_token %},render方法会为它渲染一个随机字符串一

python学习点滴记录-Day03

函数基础 一. 使用函数带来的好处 #使代码组织结构清晰#减少代码冗余#可以统一管理且降低维护难度可以把函数当作日常生活中的工具,具备某种功能的物件,直接拿来使用即可. 二.函数的分类 内置函数:python解释器内置了大量函数方便开发者直接使用 自定义函数:根据自身需求自己编写的函数 三.函数的使用 定义函数 函数的定义与变量的定义类似,需要提前定义再调用 定义函数时只检测语法,不执行代码 def 函数名(arg1,arg2,arg3): '''注释''' 函数体 return 返回值 调用函

python学习点滴记录-Day08

本次课大纲 接口与归一化设计 多态与多态性 封装 静态属性property 面向对象高级 异常处理 网络编程 接口与归一化设计 1.什么是接口 =================第一部分:Java 语言中的接口很好的展现了接口的含义: IAnimal.java /* * Java的Interface接口的特征: * 1)是一组功能的集合,而不是一个功能 * 2)接口的功能用于交互,所有的功能都是public,即别的对象可操作 * 3)接口只定义函数,但不涉及函数实现 * 4)这些功能是相关的,都

python学习点滴记录-Day22

文件上传 form表单文件操作 ajax文件操作 头像上传 默认头像覆盖 预览 注册页面,form钩子,清空之前的error信息 博客首页,初始化数据,首页样式调试. auth实现登录与注册 个人中心左侧的昵称 园龄 头像:分类归档.标签归档.时间归档: 各个url跳转 文章详情页 点赞 不能重复点赞, 事物 def diggit(request): from django.db.models import F from django.db import transaction state={"

python学习点滴记录-Day02补充-文件操作

字符编码: 把人类的字符翻译成计算机能认识的数字 字符编码表 存放着人类字符和计算机数字的对应关系表 ascii.gbk.utf-8.unicode unicode>encode(utf8)>bytes bytes>decode(utf8)>unicode 文件处理补充: 字符以什么格式编码的,就要以什么格式解码 文件的打开模式 文件句柄 = open('文件路径', '模式') 打开文件时,需要指定文件路径和以何等方式打开文件,打开后,即可获取该文件句柄,日后通过此文件句柄对该文

python学习点滴记录-Day12-前端基础之html

html 定义: 超文本标记语言(Hypertext Markup Language,HTML)通过标签语言来标记要显示的网页中的各个部分.一套规则,浏览器认识的规则 浏览器按顺序渲染网页文件,然后根据标记符解释和显示内容.但需要注意的是,对于不同的浏览器,对同一标签可能会有不完全相同的解释(兼容性) 静态网页文件扩展名:.html 或 .htm HTML 不是一种编程语言,而是一种标记语言 (markup language) HTML 使用标记标签来描述网页 html结构 <!DOCTYPE

python学习点滴记录-Day21-项目

待整理 ajax的跨域三种方式 单独的cookie验证,写入与调取验证 form组件 用来校验用户提交的数据 可以做到保留正确信息 ,提示错误信息 以上为上午内容 下午内容 梳理博客项目所需要的表,表与表之间的关系 验证码