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安装使用命令行交互模块pexpect的基础教程
May 12 Python
Python基于pillow判断图片完整性的方法
Sep 18 Python
python爬虫框架talonspider简单介绍
Jun 09 Python
用python实现k近邻算法的示例代码
Sep 06 Python
对pandas中iloc,loc取数据差别及按条件取值的方法详解
Nov 06 Python
windows下 兼容Python2和Python3的解决方法
Dec 05 Python
对python过滤器和lambda函数的用法详解
Jan 21 Python
python中对_init_的理解及实例解析
Oct 11 Python
python爬虫爬取监控教务系统的思路详解
Jan 08 Python
浅谈django 模型类使用save()方法的好处与注意事项
Mar 28 Python
什么是python的列表推导式
May 26 Python
python有几个版本
Jun 17 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数组的使用方法小结
2010/09/23 PHP
PHP中exec函数和shell_exec函数的区别
2014/08/20 PHP
php经典算法集锦
2015/11/14 PHP
CentOS下搭建PHP环境与WordPress博客程序的全流程总结
2016/05/07 PHP
php array_slice 取出数组中的一段序列实例
2016/11/04 PHP
Laravel Validator 实现两个或多个字段联合索引唯一
2019/05/08 PHP
jQuery 1.9.1源码分析系列(十五)动画处理之缓动动画核心Tween
2015/12/03 Javascript
AngularJs实现ng1.3+表单验证
2015/12/10 Javascript
jQuery的ajax和遍历数组json实例代码
2016/08/01 Javascript
总结javascript中的六种迭代器
2016/08/16 Javascript
JavaScript正则表达式exec/g实现多次循环用法示例
2017/01/17 Javascript
详解如何在angular2中获取节点
2017/11/23 Javascript
vue-cli监听组件加载完成的方法
2018/09/07 Javascript
vue中el-input绑定键盘按键(按键修饰符)
2020/07/22 Javascript
Vue过滤器,生命周期函数和vue-resource简单介绍
2021/01/12 Vue.js
Python序列之list和tuple常用方法以及注意事项
2015/01/09 Python
在Python中使用matplotlib模块绘制数据图的示例
2015/05/04 Python
编写Python脚本把sqlAlchemy对象转换成dict的教程
2015/05/29 Python
python实现mysql的单引号字符串过滤方法
2015/11/14 Python
Python类属性的延迟计算
2016/10/22 Python
python机器学习库常用汇总
2017/11/15 Python
Python虚拟环境项目实例
2017/11/20 Python
使用python和Django完成博客数据库的迁移方法
2018/01/05 Python
python实现数据写入excel表格
2018/03/25 Python
详解Django 中是否使用时区的区别
2018/06/14 Python
利用Pyhton中的requests包进行网页访问测试的方法
2018/12/26 Python
Python3中列表list合并的四种方法
2019/04/19 Python
基于python实现对文件进行切分行
2020/04/26 Python
Tensorflow中k.gradients()和tf.stop_gradient()用法说明
2020/06/10 Python
python中元组的用法整理
2020/06/15 Python
纯CSS改变webkit内核浏览器的滚动条样式
2014/04/17 HTML / CSS
教育局长自荐信范文
2013/12/22 职场文书
幼儿园家长评语
2014/02/10 职场文书
节能环保口号
2014/06/12 职场文书
2014年数学教研组工作总结
2014/12/06 职场文书
MYSQL(电话号码,身份证)数据脱敏的实现
2021/05/28 MySQL