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 相关文章推荐
python2.7删除文件夹和删除文件代码实例
Dec 18 Python
Python 检查数组元素是否存在类似PHP isset()方法
Oct 14 Python
Django小白教程之Django用户注册与登录
Apr 22 Python
Python面向对象之类和对象实例详解
Dec 10 Python
对python3中, print横向输出的方法详解
Jan 28 Python
python实现手机销售管理系统
Mar 19 Python
python selenium 查找隐藏元素 自动播放视频功能
Jul 24 Python
基于python3 的百度图片下载器的实现代码
Nov 05 Python
Python 求数组局部最大值的实例
Nov 26 Python
python 实现屏幕录制示例
Dec 23 Python
Python要如何实现列表排序的几种方法
Feb 21 Python
使用Python内置模块与函数进行不同进制的数的转换
Apr 26 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程序中防止盗链
2008/04/09 PHP
PHP函数引用返回的实例详解
2016/09/11 PHP
[原创]php token使用与验证示例【测试可用】
2017/08/30 PHP
使用ucenter实现多站点同步登录的讲解
2019/03/21 PHP
免费空间广告万能消除代码
2006/09/04 Javascript
Array的push与unshift方法性能比较分析
2011/03/05 Javascript
40个有创意的jQuery图片和内容滑动及弹出插件收藏集之三
2012/01/03 Javascript
Web开发之JavaScript
2012/03/29 Javascript
JS动态改变表格边框宽度的方法
2015/03/31 Javascript
常用DOM整理
2015/06/16 Javascript
jquery.map()方法的使用详解
2015/07/09 Javascript
JavaScript实现身份证验证代码
2016/02/17 Javascript
js+html5实现canvas绘制网页时钟的方法
2016/05/21 Javascript
Javascript 正则表达式校验数字的简单实例
2016/11/02 Javascript
JS判断数组那点事
2017/10/10 Javascript
详解React Native 采用Fetch方式发送跨域POST请求
2017/11/15 Javascript
js+canvas实现滑动拼图验证码功能
2018/03/26 Javascript
Vue组件Draggable实现拖拽功能
2018/12/01 Javascript
微信小程序实现点击卡片 翻转效果
2019/09/04 Javascript
vue2.x 对象劫持的原理实现
2020/04/19 Javascript
js实现随机点名器精简版
2020/06/29 Javascript
[04:59]2018DOTA2亚洲邀请赛 4.7 Mineski夺冠时刻
2018/04/09 DOTA
Python编码爬坑指南(必看)
2016/06/10 Python
Python minidom模块用法示例【DOM写入和解析XML】
2019/03/25 Python
在Django的View中使用asyncio的方法
2019/07/12 Python
CSS3 实现弹跳的小球动画
2020/10/26 HTML / CSS
C#里面如何倒序排列一个数组的元素?
2013/06/21 面试题
设计师个人求职信范文
2014/02/02 职场文书
幼儿教师寄语集锦
2014/04/03 职场文书
机关作风整顿个人剖析材料
2014/10/06 职场文书
2015年乡镇信访工作总结
2015/04/07 职场文书
2015年园林绿化工作总结
2015/05/23 职场文书
虎兄虎弟观后感
2015/06/12 职场文书
只需要100行Python代码就可以实现的贪吃蛇小游戏
2021/05/27 Python
聊聊Python String型列表求最值的问题
2022/01/18 Python
Python实现视频自动打码的示例代码
2022/04/08 Python