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简单读取大文件的方法
Jul 01 Python
Python多线程经典问题之乘客做公交车算法实例
Mar 22 Python
解决python3 HTMLTestRunner测试报告中文乱码的问题
Dec 17 Python
详解python中的模块及包导入
Aug 30 Python
关于Tensorflow 模型持久化详解
Feb 12 Python
PyQt5实现画布小程序
May 30 Python
深入了解Python 变量作用域
Jul 24 Python
python 如何快速复制序列
Sep 07 Python
python em算法的实现
Oct 03 Python
Python实现冒泡排序算法的完整实例
Nov 04 Python
python爬虫scrapy基于CrawlSpider类的全站数据爬取示例解析
Feb 20 Python
Django与AJAX实现网页动态数据显示的示例代码
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
一个PHP的String类代码
2010/04/20 PHP
php集成套件服务器xampp安装使用教程(适合第一次玩PHP的新手)
2015/06/03 PHP
FastCGI 进程意外退出造成500错误
2015/07/26 PHP
编写PHP脚本使WordPress的主题支持Widget侧边栏
2015/12/14 PHP
redirect_uri参数错误的解决方法(必看)
2017/02/16 PHP
php实现通过soap调用.Net的WebService asmx文件
2017/02/27 PHP
PHP基于swoole多进程操作示例
2019/08/12 PHP
htm调用JS代码
2007/03/15 Javascript
把html页面的部分内容保存成新的html文件的jquery代码
2009/11/12 Javascript
IE6下js通过css隐藏select的一个bug
2010/08/16 Javascript
兼容IE和FF的js脚本代码小结(比较常用)
2010/12/06 Javascript
前台js对象在后台转化java对象的问题探讨
2013/12/20 Javascript
使用javascript实现有效时间的控制,并显示将要过期的时间
2014/01/02 Javascript
js css+html实现简单的日历
2016/07/14 Javascript
bootstrap css样式之表单
2017/01/19 Javascript
VUE开发一个图片轮播的组件示例代码
2017/03/06 Javascript
echarts学习笔记之图表自适应问题详解
2017/11/22 Javascript
vue用Object.defineProperty手写一个简单的双向绑定的示例
2018/07/09 Javascript
vue-week-picker实现支持按周切换的日历
2019/06/26 Javascript
解决layui的table插件无法多层级获取json数据的问题
2019/09/19 Javascript
解决vue更新路由router-view复用组件内容不刷新的问题
2019/11/04 Javascript
浅谈JavaScript中你可能不知道URL构造函数的属性
2020/07/13 Javascript
[01:20:06]TNC vs VG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python Queue模块详细介绍及实例
2016/12/27 Python
解析Python的缩进规则的使用
2019/01/16 Python
python tkinter组件使用详解
2019/09/16 Python
python实现删除列表中某个元素的3种方法
2020/01/15 Python
python3爬虫中引用Queue的实例讲解
2020/11/24 Python
Django-celery-beat动态添加周期性任务实现过程解析
2020/11/26 Python
DC Shoes官网:美国滑板鞋和服饰品牌
2017/09/03 全球购物
英国男士时尚购物网站:Stuarts London
2017/10/22 全球购物
TripAdvisor瑞典:全球领先的旅游网站
2017/12/11 全球购物
缓解脚、腿和背部疼痛:Z-CoiL鞋
2019/03/12 全球购物
2016全国“质量月”活动标语口号
2015/12/26 职场文书
Java实现多文件上传功能
2021/06/30 Java/Android
Mysql中常用的join连接方式
2022/05/11 MySQL