Django视图和URL配置详解


Posted in Python onJanuary 31, 2018

本文研究的主要是Django视图和URL配置,具体介绍如下。

一、视图

1.在mysite文件夹下,创建views.py文件(文件名没有特别的要求);

from django.http import HttpResponse 
   def hello(request): 
     return HttpResponse("Hello world")

2.修改mysite文件夹下的urls.py文件;

from django.conf.urls import url 
from django.contrib import admin 
 
from mysite.views import hello 
 
urlpatterns = [ 
  url(r'^admin/', admin.site.urls), 
  url(r'^hello/$', hello), 
]

3.运行命令:python manage.py runserver。在浏览器访问http://127.0.0.1:8000/hello/;

4.你的URL申请在URLconf中没有定义,“404错误”页面就会显示,它精确的告诉你Django调用在哪个URLconf及其包含的每个模式,该页面只会在调试模式(debug mode)下显示;

Django视图和URL配置详解

二、Django是如何处理请求

1.当你运行python manage.py runserver,在manage.py同一个目录下查找名为setting.py的文件,该文件包含了关于所有Django项目的配置信息;

ROOT_URLCONF='mysite.urls'#指向自动生产的urls.py

2.浏览器里敲http://127.0.0.1:8000/hello访问时候,根据ROOT_URLCONF的设置装载URLconf,然后按顺序逐个匹配URLConf里面的URLpatterns,直到找到一个匹配的;

3.当找到这个匹配的URLpatterns就调用相关联的view函数,并把HttpRequest对象作为第一个参数;

4.Django转换成HttpResponse为一个适合的HTTP reponse,以Web page显示出来;

三、动态内容

1.在项目views.py中添加,如下视图:

from django.http import HttpResponse 
import datetime 
 
  def hello(request): 
    return HttpResponse("Hello world") 
 
  def current_datetime(request): 
    now = datetime.datetime.now() 
    html = "<html><body>It is now %s.</body></html>" % now 
    return HttpResponse(html)

2.在项目urls.py中添加,如下配置:

from django.conf.urls import url 
from django.contrib import admin 
 
from mysite.views import hello , current_datetime 
 
urlpatterns = [ 
  url(r'^admin/', admin.site.urls), 
  url(r'^hello/$', hello), 
  url(r'^time/$', current_datetime), 
]

3.重新启动服务,访问http://127.0.0.1:8000/time

Django视图和URL配置详解

4.松耦合原则,URL的定义和视图函数之间的松耦合;

四、动态URL

1.在项目views.py中添加,如下视图:

from django.http import HttpResponse , Http404 
import datetime 
... ...  
def hours_ahead(request, offset): 
  try: 
    offset = int(offset) 
  except ValueError: 
    raise Http404() 
  dt = datetime.datetime.now() + datetime.timedelta(hours=offset) 
  html = "<html><body>In %s hours(s), it will be %s.</body></html>" % (offset, dt) 
  return HttpResponse(html)

2.在项目urls.py中添加,如下配置:

from django.conf.urls import url 
from django.contrib import admin 
 
from mysite.views import hello , current_datetime , hours_ahead 
 
urlpatterns = [ 
  url(r'^admin/', admin.site.urls), 
  ... ...  
  url(r'^time/plus/(\d{1,2})/$', hours_ahead), 
]

3.重新启动服务,访问http://127.0.0.1:8000/time/1

Django视图和URL配置详解

总结

以上就是本文关于Django视图和URL配置详解的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

Python 相关文章推荐
浅谈Python数据类型判断及列表脚本操作
Nov 04 Python
TensorFlow实现非线性支持向量机的实现方法
Apr 28 Python
python使用Flask操作mysql实现登录功能
May 14 Python
Python3之不使用第三方变量,实现交换两个变量的值
Jun 26 Python
Python解决pip install时出现的Could not fetch URL问题
Aug 01 Python
python返回数组的索引实例
Nov 28 Python
Django实现从数据库中获取到的数据转换为dict
Mar 27 Python
在脚本中单独使用django的ORM模型详解
Apr 01 Python
Python调用shell命令常用方法(4种)
May 11 Python
python 代码实现k-means聚类分析的思路(不使用现成聚类库)
Jun 01 Python
Django实现在线无水印抖音视频下载(附源码及地址)
May 06 Python
Python利用folium实现地图可视化
May 23 Python
Python编程求质数实例代码
Jan 31 #Python
Python及Django框架生成二维码的方法分析
Jan 31 #Python
Python进阶之尾递归的用法实例
Jan 31 #Python
简单的python协同过滤程序实例代码
Jan 31 #Python
Python进阶之递归函数的用法及其示例
Jan 31 #Python
Python tkinter事件高级用法实例
Jan 31 #Python
pyqt5自定义信号实例解析
Jan 31 #Python
You might like
用PHP函数解决SQL injection
2006/12/09 PHP
PHP中的traits简单使用实例
2015/05/13 PHP
Zend Framework教程之路由功能Zend_Controller_Router详解
2016/03/07 PHP
详谈phpAdmin修改密码后拒绝访问的问题
2017/04/03 PHP
PHP基于方差和标准差计算学生成绩的稳定性示例
2017/07/04 PHP
js 针对html DOM元素操作等经验累积
2014/03/11 Javascript
jQuery图片切换插件jquery.cycle.js使用示例
2014/06/16 Javascript
readonly和disabled属性的区别
2015/07/26 Javascript
JavaScript人脸识别技术及脸部识别JavaScript类库Tracking.js
2015/09/14 Javascript
理解Javascript的call、apply
2015/12/16 Javascript
JS判断字符串变量是否含有某个字串的实现方法
2016/06/03 Javascript
javascript类型系统——日期Date对象全面了解
2016/07/13 Javascript
Angular2表单自定义验证器的实现
2016/10/19 Javascript
面试常见的js算法题
2017/03/23 Javascript
JavaScript判断浏览器和hack滚动条的写法
2017/07/23 Javascript
JS解决position:sticky的兼容性问题的方法
2017/10/17 Javascript
jQuery 实现左右两侧菜单添加、移除功能
2018/01/02 jQuery
小程序接入腾讯位置服务的详细流程
2020/03/03 Javascript
JavaScript 事件代理需要注意的地方
2020/09/08 Javascript
TypeScript魔法堂之枚举的超实用手册
2020/10/29 Javascript
Python笔记(叁)继续学习
2012/10/24 Python
python 将字符串转换成字典dict
2013/03/24 Python
Python实现CET查分的方法
2015/03/10 Python
浅谈Python 对象内存占用
2016/07/15 Python
python pandas消除空值和空格以及 Nan数据替换方法
2018/10/30 Python
python 实现视频流下载保存MP4的方法
2019/01/09 Python
Python3-异步进程回调函数(callback())介绍
2020/05/02 Python
Python datetime模块的使用示例
2021/02/02 Python
CSS3 完美实现圆角效果
2009/07/13 HTML / CSS
html5实现输入框fixed定位在屏幕最底部兼容性
2020/07/03 HTML / CSS
大学生军训自我评价分享
2013/11/09 职场文书
护士自我介绍信
2014/01/13 职场文书
英文版辞职信
2015/02/28 职场文书
幼儿园圣诞节活动总结
2015/05/06 职场文书
小学生班干部竞选稿
2015/11/20 职场文书
php引用传递
2021/04/01 PHP