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实现k-means聚类算法
Feb 23 Python
Python 普通最小二乘法(OLS)进行多项式拟合的方法
Dec 29 Python
python 梯度法求解函数极值的实例
Jul 10 Python
Python 实现一个手机号码获取妹子名字的功能
Sep 25 Python
python实现12306登录并保存cookie的方法示例
Dec 17 Python
Python爬虫谷歌Chrome F12抓包过程原理解析
Jun 04 Python
python脚本和网页有何区别
Jul 02 Python
python 深度学习中的4种激活函数
Sep 18 Python
python调用jenkinsAPI构建jenkins,并传递参数的示例
Dec 09 Python
Window10上Tensorflow的安装(CPU和GPU版本)
Dec 15 Python
No module named ‘win32gui‘ 的解决方法(踩坑之旅)
Feb 18 Python
Python可视化学习之seaborn调色盘
Feb 24 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
使用gd库实现php服务端图片裁剪和生成缩略图功能分享
2013/12/25 PHP
PHP回溯法解决0-1背包问题实例分析
2015/03/23 PHP
JQuery 初体验(建议学习jquery)
2009/04/25 Javascript
比较简单的异步加载JS文件的代码
2009/07/18 Javascript
自己写的兼容ie和ff的在线文本编辑器类似ewebeditor
2012/12/12 Javascript
Javascript中 关于prototype属性实现继承的原理图
2013/04/16 Javascript
jQuery滚动条插件nanoscroller使用指南
2015/04/21 Javascript
JavaScript高级程序设计(第三版)学习笔记1~5章
2016/03/11 Javascript
JavaScript数组的定义及数字操作技巧
2016/06/06 Javascript
JS实现淡入淡出图片效果的方法分析
2016/12/20 Javascript
JS仿JQuery选择器功能
2017/03/08 Javascript
AngularJS实现的获取焦点及失去焦点时的表单验证功能示例
2017/10/25 Javascript
three.js实现3D模型展示的示例代码
2017/12/31 Javascript
angular4应用中输入的最小值和最大值的方法
2019/05/17 Javascript
微信小程序 image组件遇到的问题
2019/05/28 Javascript
JavaScript中如何调用Java方法
2020/09/16 Javascript
如何手写一个简易的 Vuex
2020/10/10 Javascript
Django中传递参数到URLconf的视图函数中的方法
2015/07/18 Python
一个基于flask的web应用诞生 记录用户账户登录状态(6)
2017/04/11 Python
Python爬虫的两套解析方法和四种爬虫实现过程
2018/07/20 Python
python使用PIL模块获取图片像素点的方法
2019/01/08 Python
详解Python odoo中嵌入html简单的分页功能
2019/05/29 Python
python3 批量获取对应端口服务的实例
2019/07/25 Python
Python3常见函数range()用法详解
2019/12/30 Python
Pandas对每个分组应用apply函数的实现
2020/12/13 Python
HTML5 实战PHP之Web页面表单设计
2011/10/09 HTML / CSS
纽约JewelryAffairs珠宝店:精细金银时尚首饰
2017/02/05 全球购物
用C语言实现文件读写操作
2013/10/27 面试题
应届毕业生就业自荐信
2013/10/26 职场文书
汽车维修工岗位职责
2014/02/12 职场文书
思想作风建设心得体会
2014/10/22 职场文书
小学体育组工作总结
2015/08/13 职场文书
2019请假条的基本格式及范文!
2019/07/05 职场文书
使用redis生成唯一编号及原理示例详解
2021/09/15 Redis
解析mybatis-plus中的resultMap简单使用
2021/11/23 Java/Android
配置nginx负载均衡
2022/05/06 Servers