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回溯法实现数组全排列输出实例分析
Mar 17 Python
Python的Bottle框架中返回静态文件和JSON对象的方法
Apr 30 Python
安装dbus-python的简要教程
May 05 Python
Python设计模式之建造者模式实例详解
Jan 17 Python
numpy:np.newaxis 实现将行向量转换成列向量
Nov 30 Python
pytorch获取模型某一层参数名及参数值方式
Dec 30 Python
tensorflow之变量初始化(tf.Variable)使用详解
Feb 06 Python
Django 自定义404 500等错误页面的实现
Mar 08 Python
python实现密码验证合格程序的思路详解
Jun 01 Python
keras Lambda自定义层实现数据的切片方式,Lambda传参数
Jun 11 Python
Python实现天气查询软件
Jun 07 Python
Python-OpenCV实现图像缺陷检测的实例
Jun 11 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中获取主机名、协议及IP地址的方法
2014/11/18 PHP
使用PHP如何实现高效安全的ftp服务器(二)
2015/12/30 PHP
php成功操作redis cluster集群的实例教程
2019/01/13 PHP
Laravel timestamps 设置为unix时间戳的方法
2019/10/11 PHP
HTTP头隐藏PHP版本号实现过程解析
2020/12/09 PHP
JavaScript 事件系统
2010/07/22 Javascript
js弹出层包含flash 不能关闭隐藏的2种处理方法
2013/06/17 Javascript
jquery实现网页查找功能示例分享
2014/02/12 Javascript
关于javaScript注册click事件传递参数的不成功问题
2014/07/18 Javascript
JQuery使用index方法获取Jquery对象数组下标的方法
2015/05/18 Javascript
JavaScript基础知识之方法汇总结
2016/01/24 Javascript
jQuery设置单选按钮radio选中/不可用的实例代码
2016/06/24 Javascript
js正则表达式验证密码强度【推荐】
2017/03/03 Javascript
es6的数字处理的方法(5个)
2017/03/16 Javascript
详解vue-router 2.0 常用基础知识点之router-link
2017/05/10 Javascript
Vue.js用法详解
2017/11/13 Javascript
Vue单页应用引用单独的样式文件的两种方式
2018/03/30 Javascript
JS前端知识点 运算符优先级,URL编码与解码,String,Math,arguments操作整理总结
2019/06/27 Javascript
[56:38]DOTA2-DPC中国联赛正赛Aster vs Magma BO3 第一场 3月5日
2021/03/11 DOTA
在Python中使用CasperJS获取JS渲染生成的HTML内容的教程
2015/04/09 Python
Python在图片中添加文字的两种方法
2017/04/29 Python
keras读取训练好的模型参数并把参数赋值给其它模型详解
2020/06/15 Python
如何利用python之wxpy模块玩转微信
2020/08/17 Python
前端实现背景虚化但内容清晰且自适应 的实例代码
2019/08/01 HTML / CSS
美国转售二手商品的电子商务平台:BLINQ
2018/12/13 全球购物
J2EE的优越性主要表现在哪些方面
2016/03/28 面试题
岗位竞聘演讲稿
2014/01/10 职场文书
2014年机关植树节活动方案
2014/02/27 职场文书
赞美老师的演讲稿
2014/05/22 职场文书
暑假社会实践心得体会
2014/09/02 职场文书
党委领导班子整改方案
2014/09/30 职场文书
2015年公务员转正工作总结
2015/04/24 职场文书
党风廉政教育心得体会2016
2016/01/22 职场文书
MySQL 重写查询语句的三种策略
2021/05/10 MySQL
教你利用python实现企业微信发送消息
2021/05/23 Python
Vue+TypeScript中处理computed方式
2022/04/02 Vue.js