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编写分析Python程序性能的工具的教程
Apr 01 Python
Python中的super()方法使用简介
Aug 14 Python
Python实现的下载网页源码功能示例
Jun 13 Python
python去除字符串中的换行符
Oct 11 Python
Sublime开发python程序的示例代码
Jan 24 Python
python numpy 显示图像阵列的实例
Jul 02 Python
Python实现计算字符串中出现次数最多的字符示例
Jan 21 Python
详解Python 切片语法
Jun 10 Python
Python解压 rar、zip、tar文件的方法
Nov 19 Python
pytorch点乘与叉乘示例讲解
Dec 27 Python
python判断链表是否有环的实例代码
Jan 31 Python
Python 转移文件至云对象存储的方法
Feb 07 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 高手之路(二)
2006/10/09 PHP
PHP数据流应用的一个简单实例
2012/09/14 PHP
做了CDN获取用户真实IP的函数代码(PHP与Asp设置方式)
2013/04/13 PHP
ThinkPHP调试模式与日志记录概述
2014/08/22 PHP
PHP、Python和Javascript的装饰器模式对比
2015/02/03 PHP
php实现汉字验证码和算式验证码的方法
2015/03/07 PHP
不间断滚动JS打包类,基本可以实现所有的滚动效果,太强了
2007/12/08 Javascript
jQuery获取地址栏参数插件(模仿C#)
2010/10/26 Javascript
基于JavaScript实现继承机制之原型链(prototype chaining)的详解
2013/05/07 Javascript
JQuery-tableDnD 拖拽的基本使用介绍
2013/07/04 Javascript
JQuery页面图片切换和新闻列表滚动效果的具体实现
2013/09/26 Javascript
指定区域的图片自动按比例缩小的js代码(防止页面被图片撑破)
2014/02/21 Javascript
IE6-IE9中tbody的innerHTML不能赋值的解决方法
2014/09/26 Javascript
node.js中的querystring.escape方法使用说明
2014/12/10 Javascript
jquery实现手风琴效果
2015/11/20 Javascript
基于JavaScript实现回到页面顶部动画代码
2016/05/24 Javascript
vue router2.0二级路由的简单使用
2017/07/05 Javascript
基于rem的移动端响应式适配方案(详解)
2017/07/07 Javascript
原生js实现获取form表单数据代码实例
2019/03/27 Javascript
Vue+Element实现动态生成新表单并添加验证功能
2019/05/23 Javascript
详解JavaScript修改注册表的方法
2020/01/05 Javascript
javascript中的offsetWidth、clientWidth、innerWidth及相关属性方法
2020/05/14 Javascript
微信小程序通过websocket实时语音识别的实现代码
2020/08/19 Javascript
Python 除法小技巧
2008/09/06 Python
数据挖掘之Apriori算法详解和Python实现代码分享
2014/11/07 Python
使用C#配合ArcGIS Engine进行地理信息系统开发
2016/02/19 Python
python读取txt文件并取其某一列数据的示例
2019/02/19 Python
Python如何把十进制数转换成ip地址
2020/05/25 Python
python中类与对象之间的关系详解
2020/12/16 Python
data:image data url 文件转为Blob上传后端的方法
2019/07/16 HTML / CSS
一站式跨境收款解决方案:Payoneer(派安盈)
2018/09/06 全球购物
SOA面试题:如何在SOA中实现松耦合
2013/07/21 面试题
城市轨道专业个人求职信范文
2013/09/23 职场文书
毕业生学校推荐信范文
2014/05/21 职场文书
学校党的群众路线教育实践活动总结报告
2014/07/03 职场文书
2014年小学校长工作总结
2014/12/08 职场文书