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 过滤字符串的技巧,map与itertools.imap
Sep 06 Python
在Python中用split()方法分割字符串的使用介绍
May 20 Python
实例讲解Python的函数闭包使用中应注意的问题
Jun 20 Python
Python3 循环语句(for、while、break、range等)
Nov 20 Python
如何使用Python标准库进行性能测试
Jun 25 Python
Python中的__init__作用是什么
Jun 09 Python
python新手学习可变和不可变对象
Jun 11 Python
Python map及filter函数使用方法解析
Aug 06 Python
Django框架实现在线考试系统的示例代码
Nov 30 Python
pytorch 如何使用amp进行混合精度训练
May 24 Python
Python中使用tkFileDialog实现文件选择、保存和路径选择
May 20 Python
Pandas实现批量拆分与合并Excel的示例代码
May 30 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
德生BCL3000的电路分析和打磨
2021/03/02 无线电
php 无限极分类
2008/03/27 PHP
ThinkPHP连接数据库及主从数据库的设置教程
2014/08/22 PHP
php银联网页支付实现方法
2015/03/04 PHP
PHP 进程池与轮询调度算法实现多任务的示例代码
2019/11/26 PHP
PHP实现简单日历类编写
2020/08/28 PHP
根据鼠标的位置动态的控制层的位置
2009/11/24 Javascript
网页中的图片的处理方法与代码
2009/11/26 Javascript
extjs 的权限问题 要求控制的对象是 菜单,按钮,URL
2010/03/09 Javascript
各情景下元素宽高的获取实现代码
2011/09/13 Javascript
js setTimeout opener的用法示例详解
2013/10/23 Javascript
JavaScript基础知识学习笔记
2014/12/02 Javascript
Javascript闭包用法实例分析
2015/01/23 Javascript
jQuery实现菜单式图片滑动切换
2015/03/14 Javascript
基于Vue的延迟加载插件vue-view-lazy
2018/05/21 Javascript
简述JS浏览器的三种弹窗
2018/07/15 Javascript
JavaScript函数节流和函数去抖知识点学习
2018/07/31 Javascript
layui table 多行删除(id获取)的方法
2019/09/12 Javascript
jQuery实现聊天对话框
2020/02/08 jQuery
[03:54]DOTA2英雄梦之声_第06期_昆卡
2014/06/23 DOTA
[00:57]林俊杰助阵DOTA2亚洲邀请赛
2015/01/28 DOTA
Python中关键字is与==的区别简述
2014/07/31 Python
Python代码缩进和测试模块示例详解
2018/05/07 Python
Python实现在某个数组中查找一个值的算法示例
2018/06/27 Python
tensorflow dataset.shuffle、dataset.batch、dataset.repeat顺序区别详解
2020/06/03 Python
CSS3 渐变(Gradients)之CSS3 线性渐变
2016/07/08 HTML / CSS
七年级历史教学反思
2014/02/05 职场文书
企业厂务公开实施方案
2014/03/26 职场文书
高考标语大全
2014/06/05 职场文书
夫妻分居协议书范本
2014/11/28 职场文书
行政文员岗位职责
2015/02/04 职场文书
廉洁自律个人总结
2015/02/14 职场文书
道歉的话语大全
2015/05/12 职场文书
什么是检讨书?检讨书的格式及范文
2019/11/05 职场文书
vue使用节流函数的踩坑实例指南
2021/05/20 Vue.js
Python语言内置数据类型
2022/02/24 Python