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发送HTTP请求的方法小结
Jul 08 Python
Django管理员账号和密码忘记的完美解决方法
Dec 06 Python
IntelliJ IDEA安装运行python插件方法
Dec 10 Python
详解python之heapq模块及排序操作
Apr 04 Python
python3反转字符串的3种方法(小结)
Nov 07 Python
Django通用类视图实现忘记密码重置密码功能示例
Dec 17 Python
Python实现计算长方形面积(带参数函数demo)
Jan 18 Python
使用OpenCV获取图片连通域数量,并用不同颜色标记函
Jun 04 Python
Python字符串三种格式化输出
Sep 17 Python
Pycharm自动添加文件头注释和函数注释参数的方法
Oct 23 Python
如何使用python-opencv批量生成带噪点噪线的数字验证码
Dec 21 Python
浅析Python模块之间的相互引用问题
Feb 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
使用sockets:从新闻组中获取文章(一)
2006/10/09 PHP
PHP 多维数组的排序问题 根据二维数组中某个项排序
2011/11/09 PHP
PHP页面中文乱码分析
2013/10/29 PHP
Extjs学习笔记之九 数据模型(上)
2010/01/11 Javascript
JS在IE和FireFox之间常用函数的区别小结
2010/03/12 Javascript
Jquery动态进行图片缩略的原理及实现
2013/08/13 Javascript
js 一个关于图片onload加载的事
2013/11/10 Javascript
可插入图片的TEXT文本框
2013/12/27 Javascript
javascript学习笔记(四)function函数部分
2014/09/30 Javascript
jquery事件preventDefault()方法用法实例
2015/01/16 Javascript
JavaScript返回上一页的三种方法及区别介绍
2015/07/04 Javascript
JavaScript实现基于十进制的四舍五入实例
2015/07/17 Javascript
BootStrap 可编辑表Table格
2016/11/24 Javascript
原生JS和jQuery操作DOM对比总结
2017/01/19 Javascript
JQuery实现图片轮播效果
2017/05/08 jQuery
BootStrap表单控件之复选框checkbox和单选择按钮radio
2017/05/23 Javascript
vue自定义移动端touch事件之点击、滑动、长按事件
2018/07/10 Javascript
Vue单页面应用中实现Markdown渲染
2021/02/14 Vue.js
Python语言技巧之三元运算符使用介绍
2013/03/04 Python
在Django框架中编写Context处理器的方法
2015/07/20 Python
解决Python字典写入文件出行首行有空格的问题
2017/09/27 Python
python里使用正则的findall函数的实例详解
2017/10/19 Python
numpy使用fromstring创建矩阵的实例
2018/06/15 Python
pandas 把数据写入txt文件每行固定写入一定数量的值方法
2018/12/28 Python
推荐一些比较有用的css3新属性
2014/11/11 HTML / CSS
俄罗斯美容和健康网上商店:Созвездие Красоты
2019/07/23 全球购物
美体小铺印度官网:The Body Shop印度
2019/10/17 全球购物
端口镜像是怎么实现的
2014/03/25 面试题
国培教师自我鉴定
2014/02/12 职场文书
舞蹈教育学专业求职信
2014/06/29 职场文书
小学二年级数学教学计划
2015/01/20 职场文书
商务邀请函
2015/01/30 职场文书
2016年重阳节慰问信
2015/12/01 职场文书
小学五年级(说明文3篇)
2019/08/13 职场文书
nginx+lua单机上万并发的实现
2021/05/31 Servers
Java常用工具类汇总 附示例代码
2021/06/26 Java/Android