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 相关文章推荐
OpenCV2从摄像头获取帧并写入视频文件的方法
Aug 03 Python
详解Python 4.0 预计推出的新功能
Jul 26 Python
浅谈python已知元素,获取元素索引(numpy,pandas)
Nov 26 Python
OpenCV+Python--RGB转HSI的实现
Nov 27 Python
python dataframe NaN处理方式
Dec 26 Python
Python 字典中的所有方法及用法
Jun 10 Python
python批量处理多DNS多域名的nslookup解析实现
Jun 28 Python
学python最电脑配置有要求么
Jul 05 Python
python如何将图片转换素描画
Sep 08 Python
Python confluent kafka客户端配置kerberos认证流程详解
Oct 12 Python
pytorch中的torch.nn.Conv2d()函数图文详解
Feb 28 Python
Python的代理类实现,控制访问和修改属性的权限你都了解吗
Mar 21 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与ip段访问的代码小结
2012/07/04 PHP
PHP中使用php://input处理相同name值的表单数据
2015/02/03 PHP
php简单统计在线人数的方法
2016/05/10 PHP
PHP redis实现超迷你全文检索
2017/03/04 PHP
thinkphp5使用无限极分类
2019/02/18 PHP
js控制分页打印、打印分页示例
2014/02/08 Javascript
jquery.hotkeys监听键盘按下事件keydown插件
2014/05/11 Javascript
jQuery实现个性翻牌效果导航菜单的方法
2015/03/09 Javascript
Javascript 是你的高阶函数(高级应用)
2015/06/15 Javascript
javascript数据类型验证方法
2015/12/31 Javascript
浅谈ECMAScript6新特性之let、const
2017/08/02 Javascript
JS解析url查询参数的简单代码
2017/08/06 Javascript
JavaScript中的事件与异常捕获详析
2019/02/24 Javascript
cordova+vue+webapp使用html5获取地理位置的方法
2019/07/06 Javascript
Vue 解决多级动态面包屑导航的问题
2019/11/04 Javascript
js中调用微信的扫描二维码功能的实现代码
2020/04/11 Javascript
JavaScript实现Tab标签页切换的最简便方式(4种)
2020/06/28 Javascript
[02:25]DOTA2英雄基础教程 虚空假面
2014/01/02 DOTA
[27:02]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第三场
2014/05/24 DOTA
python中pycurl库的用法实例
2014/09/30 Python
Python正则抓取网易新闻的方法示例
2017/04/21 Python
import的本质解析
2017/10/30 Python
基于python log取对数详解
2018/06/08 Python
python通过Windows下远程控制Linux系统
2018/06/20 Python
使用Python AIML搭建聊天机器人的方法示例
2018/07/09 Python
python爬虫之验证码篇3-滑动验证码识别技术
2019/04/11 Python
Python异步编程之协程任务的调度操作实例分析
2020/02/01 Python
PYQT5 vscode联合操作qtdesigner的方法
2020/03/24 Python
网吧收银员岗位职责
2013/12/14 职场文书
红领巾心向党广播稿
2014/01/19 职场文书
《在家里》教后反思
2014/03/01 职场文书
人力资源总监工作说明
2014/03/03 职场文书
创建文明城市标语
2014/06/16 职场文书
实习护士自荐信
2014/06/21 职场文书
导游词之贵州织金洞
2019/10/12 职场文书
Python import模块的缓存问题解决方案
2021/06/02 Python