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列表计数及插入实例
Dec 17 Python
Python的gevent框架的入门教程
Apr 29 Python
Python实现字符串逆序输出功能示例
Jun 24 Python
详解Python函数可变参数定义及其参数传递方式
Aug 02 Python
python实现csv格式文件转为asc格式文件的方法
Mar 23 Python
python同时遍历数组的索引和值的实例
Nov 15 Python
python将txt等文件中的数据读为numpy数组的方法
Dec 22 Python
python按照多个条件排序的方法
Feb 08 Python
django fernet fields字段加密实践详解
Aug 12 Python
python GUI库图形界面开发之PyQt5多行文本框控件QTextEdit详细使用方法实例
Feb 28 Python
python使用Thread的setDaemon启动后台线程教程
Apr 25 Python
tensorflow模型的save与restore,及checkpoint中读取变量方式
May 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使用pdo连接access数据库并循环显示数据操作示例
2018/06/05 PHP
JS backgroundImage控制
2009/05/19 Javascript
JavaScript 应用技巧集合[推荐]
2009/08/30 Javascript
分享27个jQuery 表单插件集合推荐
2011/04/25 Javascript
Javascript获取当前时间函数和时间操作小结
2014/10/01 Javascript
使用堆实现Top K算法(JS实现)
2015/12/25 Javascript
详解javascript高级定时器
2015/12/31 Javascript
Select下拉框模糊查询功能实现代码
2016/07/22 Javascript
Angular2使用Guard和Resolve进行验证和权限控制
2017/04/24 Javascript
Node.js中 __dirname 的使用介绍
2017/06/19 Javascript
vue.js国际化 vue-i18n插件的使用详解
2017/07/07 Javascript
3分钟读懂移动端rem使用方法(推荐)
2019/05/06 Javascript
JavaScript如何借用构造函数继承
2019/11/06 Javascript
vue组件内部引入外部js文件的方法
2020/01/18 Javascript
Python实现自动上京东抢手机
2018/02/06 Python
如何优雅地改进Django中的模板碎片缓存详解
2018/07/04 Python
Python3+OpenCV2实现图像的几何变换(平移、镜像、缩放、旋转、仿射)
2019/05/13 Python
pyqt 实现为长内容添加滑轮 scrollArea
2019/06/19 Python
python实现百度OCR图片识别过程解析
2020/01/17 Python
python3实现将json对象存入Redis以及数据的导入导出
2020/07/16 Python
华为旗下电子商务平台:华为商城
2016/08/06 全球购物
具有防紫外线功能的高性能钓鱼服装:Hook&Tackle
2018/08/16 全球购物
英国No.1体育用品零售商:SportsDirect.com
2019/10/16 全球购物
Ariat官网:美国马靴和服装品牌
2019/12/16 全球购物
中专毕业生自荐信
2013/11/16 职场文书
艺术设计专业个人求职信范文
2013/12/11 职场文书
煤矿安全生产责任书
2014/04/15 职场文书
高中生第一学年自我鉴定
2014/09/12 职场文书
标准单位租车协议书
2014/09/23 职场文书
群众路线专项整治方案
2014/10/27 职场文书
2014年共青团工作总结
2014/12/10 职场文书
病危通知书样本
2015/04/17 职场文书
2016年优秀少先队辅导员事迹材料
2016/02/26 职场文书
MySQL 查询速度慢的原因
2021/05/25 MySQL
在redisCluster中模糊获取key方式
2021/07/09 Redis
深入解读Java三大集合之map list set的用法
2021/11/11 Java/Android