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 切片和range()用法说明
Mar 24 Python
Python中除法使用的注意事项
Aug 21 Python
python使用socket连接远程服务器的方法
Apr 29 Python
详解Python网络爬虫功能的基本写法
Jan 28 Python
Python使用matplotlib实现的图像读取、切割裁剪功能示例
Apr 28 Python
[原创]Python入门教程1. 基本运算【四则运算、变量、math模块等】
Oct 28 Python
python中的协程深入理解
Jun 10 Python
python3获取url文件大小示例代码
Sep 18 Python
python 字段拆分详解
Dec 17 Python
使用pytorch完成kaggle猫狗图像识别方式
Jan 10 Python
Python3中PyQt5简单实现文件打开及保存
Jun 10 Python
Python3接口性能测试实例代码
Jun 20 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
XAMPP安装与使用方法详细解析
2013/11/27 PHP
php ImageMagick windows下安装教程
2015/01/26 PHP
PHP中数据类型转换的三种方式
2015/04/02 PHP
PHP实现简单的新闻发布系统实例
2015/07/28 PHP
dvwa+xampp搭建显示乱码的问题及解决方案
2015/08/23 PHP
PHP框架Laravel学习心得体会
2015/10/28 PHP
PHP实现导出带样式的Excel
2016/08/28 PHP
PHP使用curl制作简易百度搜索
2016/11/03 PHP
Laravel 默认邮箱登录改成用户名登录的实现方法
2019/08/12 PHP
javascript 贪吃蛇实现代码
2008/11/22 Javascript
js解析与序列化json数据(一)json.stringify()的基本用法
2013/02/01 Javascript
jquery实现点击展开列表同时隐藏其他列表
2015/08/10 Javascript
jQuery内容折叠效果插件用法实例分析(附demo源码)
2016/04/28 Javascript
jQuery实现删除li节点的方法
2016/12/06 Javascript
javascript 网页进度条简单实例
2017/02/22 Javascript
Javarscript中模块(module)、加载(load)与捆绑(bundle)详解
2017/05/28 Javascript
详解微信小程序 登录获取unionid
2017/06/27 Javascript
easyui datagrid 表格中操作栏 按钮图标不显示的解决方法
2017/07/27 Javascript
javascript 作用于作用域链的详解
2017/09/27 Javascript
JS实现的合并多个数组去重算法示例
2018/04/11 Javascript
Node.js使用cookie保持登录的方法
2018/05/11 Javascript
微信小程序开发注意指南和优化实践(小结)
2019/06/21 Javascript
Python的垃圾回收机制深入分析
2014/07/16 Python
Python Socket传输文件示例
2017/01/16 Python
基于Python3 逗号代码 和 字符图网格(详谈)
2017/06/22 Python
python argparser的具体使用
2019/11/10 Python
使用python实现对元素的长截图功能
2019/11/14 Python
python开发一款翻译工具
2020/10/10 Python
阿迪达斯比利时官方商城:adidas比利时
2016/10/10 全球购物
学校地质灾害防治方案
2014/06/10 职场文书
教学改革问题查摆整改措施
2014/09/27 职场文书
死亡赔偿协议书
2015/01/28 职场文书
2015年社区工作总结
2015/04/08 职场文书
python实现调用摄像头并拍照发邮箱
2021/04/27 Python
利用Matlab绘制各类特殊图形的实例代码
2021/07/16 Python
Win11怎么进入安全模式?Windows 11进入安全模式的方法
2021/11/21 数码科技