django中url映射规则和服务端响应顺序的实现


Posted in Python onApril 02, 2020

 1、django搜索路径

使用 import 语句时,Python 所查找的系统目录清单。

查看方式:

import sys
print sys.path

通常无需关心 Python 搜索路径的设置,Python 和 Django 会在后台自动帮你处理好。

2、url匹配模式

基本结构:

'^需要匹配的url字符串$'

PS:实际上最终完整的url串是http://根路径:端口号/需要匹配的url字符串

系统自动添加的部分'http://根路径:端口号/'

eg:url匹配模式:'^latest_books/$'

最终完整的url字符串:'http://127.0.0.1:8000/latest_books/'

1)^:匹配“子串头”。

eg:

'^latest_books/'
 'http://127.0.0.1:8000/latest_books/',
 'http://127.0.0.1:8000/latest_books/test1/',
 'http://127.0.0.1:8000/latest_books/test2/',
 'http://127.0.0.1:8000/latest_books/test1/aaa/'

都会被匹配上。    

 2)$:匹配“子串结尾”。

eg:

'latest_books/$'
'http://127.0.0.1:8000/latest_books/',
'http://127.0.0.1:8000/updir_1/latest_books/',
'http://127.0.0.1:8000/updir_2/latest_books/'

都会被匹配上。

 3)子串末尾是否包含'/'

默认情况下必须添加(django开发者的基本习惯),如果不添加将会出现如下情况:

from django.conf.urls import patterns, url, include

urlpatterns = patterns('',
(r'^latest_books$', 'django_web_app.views.latest_books'),
)

django中url映射规则和服务端响应顺序的实现

如果子串末尾不想包含'/',可在setting.py中添加设置:APPEND_SLASH=False

但是必须安装了CommonMiddleware才会起作用。

4)手动配置网站“根目录”

在不手动配置网站“根目录”对应“视图函数”的情况下,会出现如下情况:

django中url映射规则和服务端响应顺序的实现

手动配置“根目录”对应“视图函数”:

a)urls.py

from django.conf.urls import patterns, url, include

urlpatterns = patterns('',
            (r'^$','django_web_app.views.home_page'),
            (r'^latest_books/$', 'django_web_app.views.latest_books'),
)

b)views.py

def home_page(request):
  return render_to_response('home_page.html')

c)home_page.html

<!DOCTYPE html>
<html>
<head>
  <title>my home page</title>
</head>
<body>
  <h1>This is home page, welcome !</h1>
</body>
</html>

运行结果:

django中url映射规则和服务端响应顺序的实现

附:正则表达式基础

django中url映射规则和服务端响应顺序的实现

3、服务端响应url请求的执行顺序

1)项目结构

django_web





__init__.py





settings.py





urls.py





wsgi.py


django_web_app





__init__.py





admin.py





models.py





tests.py





views.py


templates





home_page.html





latest_books.html


manage.py

2)执行顺序

a)启动服务端——python manage.py runserver

获取setting.py文件中的配置,主要包括:

url映射关系文件路径:

ROOT_URLCONF = 'django_web.urls'

页面文件模板路径:

TEMPLATE_DIRS = (
  os.path.join(BASE_DIR, 'templates'),
)

数据库配置:

DATABASES = {
  'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME': 'django_db',
    'USER': 'root',
    'PASSWORD': 'feng',
    'HOST': '127.0.0.1',
    'PORT': '3306',
  }
}

b)响应顺序

第一步:浏览器提交请求

http://127.0.0.1:8000/latest_books/

第二步:服务端根据请求的url在urls.py中进行匹配,并找到对应的“视图函数”

第三步:调用对应的“视图函数”

返回一个HttpResponse对象

第四步:django转换HttpResponse对象为一个适合的HTTP response,并返回给页面进行显示

到此这篇关于django中url映射规则和服务端响应顺序的实现的文章就介绍到这了,更多相关django url映射规则和服务端响应顺序内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python中集合类型(set)学习小结
Jan 28 Python
Python中非常实用的一些功能和函数分享
Feb 14 Python
Python统计文件中去重后uuid个数的方法
Jul 30 Python
python特性语法之遍历、公共方法、引用
Aug 08 Python
利用Python对文件夹下图片数据进行批量改名的代码实例
Feb 21 Python
Python-Seaborn热图绘制的实现方法
Jul 15 Python
Pytorch实现神经网络的分类方式
Jan 08 Python
python判断链表是否有环的实例代码
Jan 31 Python
PyQt5实现仿QQ贴边隐藏功能的实例代码
May 24 Python
Python中使用Selenium环境安装的方法步骤
Feb 22 Python
python小程序之飘落的银杏
Apr 17 Python
python实现过滤敏感词
May 08 Python
Python实现从N个数中找到最大的K个数
Apr 02 #Python
Python任务调度利器之APScheduler详解
Apr 02 #Python
PyQt使用QPropertyAnimation开发简单动画
Apr 02 #Python
python topk()函数求最大和最小值实例
Apr 02 #Python
python使用梯度下降和牛顿法寻找Rosenbrock函数最小值实例
Apr 02 #Python
Python如何通过百度翻译API实现翻译功能
Apr 02 #Python
Python基于百度AI实现OCR文字识别
Apr 02 #Python
You might like
php empty()与isset()区别的详细介绍
2013/06/17 PHP
浅析Yii2中GridView常见操作
2016/04/22 PHP
PHP获取指定时间段之间的 年,月,天,时,分,秒
2016/06/05 PHP
thinkphp多表查询两表有重复相同字段的完美解决方法
2016/09/22 PHP
解决PHP程序运行时:Fatal error: Maximum execution time of 30 seconds exceeded in的错误提示
2016/11/25 PHP
js 判断控件获得焦点的示例代码
2014/03/04 Javascript
js无刷新操作table的行和列
2014/03/27 Javascript
JS实现控制表格只显示行边框或者只显示列边框的方法
2015/03/31 Javascript
js拆分字符串并将分割的数据放到数组中的方法
2015/05/06 Javascript
使用控制台破解百小度一个月只准改一次名字
2015/08/13 Javascript
JavaScript中iframe实现局部刷新的几种方法汇总
2016/01/06 Javascript
JavaScript随机生成颜色的方法
2016/10/15 Javascript
jQuery实现鼠标悬停3d菜单展开动画效果
2017/01/19 Javascript
浅析JS中的 map, filter, some, every, forEach, for in, for of 用法总结
2017/03/29 Javascript
详解如何在NodeJS项目中优雅的使用ES6
2017/04/22 NodeJs
微信小程序wx.previewImage预览图片实例详解
2017/12/07 Javascript
利用Vue2.x开发实现JSON树的方法
2018/01/04 Javascript
webpack 样式加载的实现原理
2018/06/12 Javascript
微信小程序实现的点击按钮 弹出底部上拉菜单功能示例
2018/12/20 Javascript
JS插入排序简单理解与实现方法分析
2019/11/25 Javascript
vue项目开启Gzip压缩和性能优化操作
2020/10/26 Javascript
[07:47]DOTA2国际邀请赛采访专栏:探访Valve总部
2013/08/08 DOTA
[03:26]回顾2015国际邀请赛中国区预选赛
2015/06/09 DOTA
python脚本替换指定行实现步骤
2017/07/11 Python
基于pycharm导入模块显示不存在的解决方法
2018/10/13 Python
Django 路由控制的实现代码
2018/11/08 Python
Python高并发解决方案实现过程详解
2020/07/31 Python
如何使用Python调整图像大小
2020/09/26 Python
HTML5中的Scoped属性使用实例
2014/04/23 HTML / CSS
马来西亚网上购物:Youbeli
2018/03/30 全球购物
C++程序员求职信
2014/05/07 职场文书
2015年党支部公开承诺书
2015/01/22 职场文书
2015年市场部工作总结
2015/04/30 职场文书
幼儿园小班开学寄语
2015/05/27 职场文书
写好Python代码的几条重要技巧
2021/05/21 Python
redis实现共同好友的思路详解
2021/05/26 Redis