视图与URLconf
视图
- 视图接受Web请求并且返回Web响应
- 视图就是一个python函数,被定义在views.py中
- 响应可以是一张网页的HTML内容,一个重定向,一个404错误等等
- 响应处理过程如下图:
URLconf
- 在settings.py文件中通过ROOT_URLCONF指定根级url的配置
- urlpatterns是一个url()实例的列表
- 一个url()对象包括:
- 正则表达式
- 视图函数
- 名称name
- 编写URLconf的注意:
- 若要从url中捕获一个值,需要在它周围设置一对圆括号
- 不需要添加一个前导的反斜杠,如应该写作'test/',而不应该写作'/test/'
- 每个正则表达式前面的r表示字符串不转义
请求的url被看做是一个普通的python字符串,进行匹配时不包括get或post请求的参数及域名 http://www.itcast.cn/python/1/?i=1&p=new,只匹配“/python/1/”部分 正则表达式非命名组,通过位置参数传递给视图 url(r'^([0-9]+)/$', views.detail, name='detail'), 正则表达式命名组,通过关键字参数传递给视图,本例中关键字参数为id url(r'^(?P<id>[0-9]+)/$', views.detail, name='detail'),
- 参数匹配规则:优先使用命名参数,如果没有命名参数则使用位置参数
- 每个捕获的参数都作为一个普通的python字符串传递给视图
- 性能:urlpatterns中的每个正则表达式在第一次访问它们时被编译,这使得系统相当快
包含其它的URLconfs
- 在应用中创建urls.py文件,定义本应用中的urlconf,再在项目的settings中使用include()
from django.conf.urls import include, url urlpatterns = [url(r'^', include('booktest.urls', namespace='booktest')), ]
- 匹配过程:先与主URLconf匹配,成功后再用剩余的部分与应用中的URLconf匹配
请求http://www.itcast.cn/booktest/1/ 在sesstings.py中的配置: url(r'^booktest/', include('booktest.urls', namespace='booktest')), 在booktest应用urls.py中的配置 url(r'^([0-9]+)/$', views.detail, name='detail'), 匹配部分是:/booktest/1/ 匹配过程:在settings.py中与“booktest/”成功,再用“1/”与booktest应用的urls匹配
- 使用include可以去除urlconf的冗余
- 参数:视图会收到来自父URLconf、当前URLconf捕获的所有参数
- 在include中通过namespace定义命名空间,用于反解析
URL的反向解析
- 如果在视图、模板中使用硬编码的链接,在urlconf发生改变时,维护是一件非常麻烦的事情
- 解决:在做链接时,通过指向urlconf的名称,动态生成链接地址
- 视图:使用django.core.urlresolvers.reverse()函数
- 模板:使用url模板标签
视图与URLconf相关推荐
- Django视图、URL、模版简介
Django视图.URL.模版简介 文章目录 Django视图.URL.模版简介 一.视图 1.简介 2.使用视图时需要进行两步操作: 3.定义视图 二.配置URLconf 1.查找视图的过程 2.U ...
- Django视图(python函数)
1.视图 视图负责接受Web请求HttpRequest,进行逻辑处理,返回Web响应HttpResponse给请求者 响应可以是一张网页的HTML内容,一个重定向,一个404错误等 视图就是pytho ...
- django 1.8 官方文档翻译: 3-4-3 使用基于类的视图处理表单
使用基于类的视图处理表单 表单的处理通常有3 个步骤: 初始的的GET (空白或预填充的表单) 带有非法数据的POST(通常重新显示表单和错误信息) 带有合法数据的POST(处理数据并重定向) 你自己 ...
- Django-C001-快速入门
此文章完成度[100%]留着以后忘记的回顾.多写多练多思考,我会努力写出有意思的demo,如果知识点有错误.误导,欢迎大家在评论处写下你的感想或者纠错. Django Django是一个开放源码的We ...
- ApacheCN PythonWeb 译文集 20211110 更新
Django By Example 中文版 1 创建一个博客应用 2 为博客添加高级功能 3 扩展你的博客应用 4 创建一个社交网站 5 分享内容到你的网站 6 跟踪用户动作 7 构建在线商店 8 管 ...
- ApacheCN PythonWeb 译文集 20211028 更新
Django By Example 中文版 1 创建一个博客应用 2 为博客添加高级功能 3 扩展你的博客应用 4 创建一个社交网站 5 分享内容到你的网站 6 跟踪用户动作 7 构建在线商店 8 管 ...
- django 1.8 官方文档翻译: 3-1-1 URL调度器
URL调度器 简洁.优雅的URL 模式在高质量的Web 应用中是一个非常重要的细节.Django 允许你任意设计你的URL,不受框架束缚. 不要求有.php 或.cgi,更不会要求类似0,2097,1 ...
- datetimepicker 默认时间_Django项目中如何使用日期时间选择器DateTimePicker
如果你的模型中含有datetime类型的字段,表单中需要用户输入日期和时间,那么你如何保证不同用户输入的时间都遵循一定的格式(DD/MM/YYYY 或者YYYY-MM-DD)是个必须要考虑的问题.一个 ...
- Django 项目管理
简介 • Django是一个开放源代码的Web应用框架,由Python写成 • 最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站 • 2005年7月在BSD许可证下发布 • Djan ...
最新文章
- 对于U盘做系统,win8降级到win7系统的心得体会
- 3种方式限制ip访问Oracle数据库
- ZOJ - 2402 DP方案数
- (16)python_random学习笔记
- ARM Keil5下载安装并导入STM32芯片
- 编程语言:8086汇编中int 16h接收alt+方向键
- 推荐几款屏幕录制工具(可录制GIF)
- 循环神经网络应用举例
- jemalloc 编译
- 2022年,雅迪电动车还能保持销量神话吗?
- JDBC Connection [com.alibaba.druid.proxy.jdbc.ConnectionProxyImpl@xxx] will not be managed by Spring
- 掩码、子网掩码及子网划分
- 基于Java毕业设计爱心公益网站设计与制作源码+系统+mysql+lw文档+部署软件
- 深度学习模型训练推理——基础环境搭建推荐博文查阅顺序【基础安装—认真帮大家整理了】——【专栏博文推荐学习顺序】
- 学习java随堂练习-20220614
- 把自己当成人物是最傻的表现zz
- mysql aes源码_MySQL AES_DECRYPT()用法及代码示例
- excel 两组数据交点_如何在百万级的数据里找到别人正在赚钱的项目?【实操长文】...
- 基于SpringBoot的实习管理系统
- java使用第三方字体库的方法,使用第三方ttf/ttc等字体库的方法
热门文章
- 如何使用Docker安装Redis\Zookeeper\Mysql
- 01_appium自动化环境的搭建
- html5获取地理位置信息API
- jquery实现body中点击按钮后,在tbody中显示一连串文本框
- 在Ubuntu下面编译WizNote Qt Project
- HDFS客户端的权限错误:Permission denied
- 在 npm script 中使用环境变量
- 面试官系统精讲Java源码及大厂真题 - 32 ReentrantLock 源码解析
- 如何使用Docker轻松集成OnlyOffice和NextCloud--快速搭建私有云办公系统/私有云盘/私有OfficeOnline
- .net core 开发 Windows Forms 程序