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使用urllib2提交http post请求的方法
May 26 Python
python选择排序算法实例总结
Jul 01 Python
利用Python的Django框架生成PDF文件的教程
Jul 22 Python
利用Python将时间或时间间隔转为ISO 8601格式方法示例
Sep 05 Python
可能是最全面的 Python 字符串拼接总结【收藏】
Jul 09 Python
python实现图片批量压缩程序
Jul 23 Python
详解django自定义中间件处理
Nov 21 Python
python无限生成不重复(字母,数字,字符)组合的方法
Dec 04 Python
python pandas写入excel文件的方法示例
Jun 25 Python
Tensorflow 1.0之后模型文件、权重数值的读取方式
Feb 12 Python
对Python中 \r, \n, \r\n的彻底理解
Mar 06 Python
Python基础详解之描述符
Apr 28 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
使用sockets:从新闻组中获取文章(二)
2006/10/09 PHP
文件上传程序的全部源码
2006/10/09 PHP
PHP substr 截取字符串出现乱码问题解决方法[utf8与gb2312]
2011/12/16 PHP
php设置session值和cookies的学习示例
2014/03/21 PHP
PHP使用内置函数file_put_contents写入文件及追加内容的方法
2015/12/07 PHP
php中static和const关键字用法分析
2016/12/07 PHP
学习js所必须要知道的一些
2007/03/07 Javascript
jQuery 位置插件
2008/12/25 Javascript
关于eval 与new Function 到底该选哪个?
2013/04/17 Javascript
JavaScript中创建类/对象的几种方法总结
2013/11/29 Javascript
Nodejs中调用系统命令、Shell脚本和Python脚本的方法和实例
2015/01/01 NodeJs
Angular2 Service实现简单音乐播放器服务
2017/02/24 Javascript
JS正则表达式判断有效数实例代码
2017/03/13 Javascript
nodejs入门教程三:调用内部和外部方法示例
2017/04/24 NodeJs
修改 bootstrap table 默认detailRow样式的实例代码
2017/07/21 Javascript
教你5分钟学会用requirejs(必看篇)
2017/07/25 Javascript
用最简单的方法判断JavaScript中this的指向(推荐)
2017/09/04 Javascript
electron demo项目npm install安装失败的解决方法
2018/02/06 Javascript
vue-cli下的vuex的简单Demo图解(实现加1减1操作)
2018/02/26 Javascript
p5.js临摹动态图形的方法
2019/10/23 Javascript
vue + elementUI实现省市县三级联动的方法示例
2019/10/29 Javascript
JavaScript事件委托实现原理及优点进行
2020/08/29 Javascript
举例讲解Python中的Null模式与桥接模式编程
2016/02/02 Python
Python正则替换字符串函数re.sub用法示例
2017/01/19 Python
Python socket实现简单聊天室
2018/04/01 Python
Appium+Python自动化测试之运行App程序示例
2019/01/23 Python
Django自关联实现多级联动查询实例
2020/05/19 Python
python中最小二乘法详细讲解
2021/02/19 Python
AmazeUI 评论列表的实现示例
2020/08/13 HTML / CSS
Everything But Water官网:美国泳装品牌
2019/03/17 全球购物
恒华伟业笔试面试题
2015/02/26 面试题
车辆安全检查制度
2014/01/12 职场文书
新闻学专业个人求职信写作
2014/02/04 职场文书
党的群众路线教育实践活动批评与自我批评范文
2014/10/16 职场文书
Python 制作自动化翻译工具
2021/04/25 Python
彩虹社八名人气艺人全新周边限时推出,性转女装男装一次拥有!
2022/04/01 日漫