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 相关文章推荐
Pyramid Mako模板引入helper对象的步骤方法
Nov 27 Python
python获取list下标及其值的简单方法
Sep 12 Python
无法使用pip命令安装python第三方库的原因及解决方法
Jun 12 Python
对pandas中iloc,loc取数据差别及按条件取值的方法详解
Nov 06 Python
PyQt5实现QLineEdit添加clicked信号的方法
Jun 25 Python
Django基础知识 URL路由系统详解
Jul 18 Python
python3下pygame如何实现显示中文
Jan 11 Python
python GUI库图形界面开发之PyQt5计数器控件QSpinBox详细使用方法与实例
Feb 28 Python
Python 输出详细的异常信息(traceback)方式
Apr 08 Python
pycharm下pyqt4安装及环境配置的教程
Apr 24 Python
史上最详细的Python打包成exe文件教程
Jan 17 Python
Python&Matlab实现樱花的绘制
Apr 07 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
解析coreseek for sphinx的使用
2013/06/21 PHP
AJAX的跨域访问-两种有效的解决方法介绍
2013/06/22 PHP
php中simplexml_load_string使用实例分享
2014/02/13 PHP
PHP实现文件上传后台处理脚本
2020/03/04 PHP
JavaScript与DropDownList 区别分析
2010/01/01 Javascript
javascript折半查找详解
2015/01/26 Javascript
基于jquery实现页面滚动时顶部导航显示隐藏
2020/04/20 Javascript
Jquery实现的简单轮播效果【附实例】
2016/04/19 Javascript
javascript和jquery实现用户登录验证
2016/05/04 Javascript
JS实现星星评分功能实例代码(两种方法)
2016/06/09 Javascript
AngularJS基础 ng-dblclick 指令用法
2016/08/01 Javascript
JSON 必知必会 观后记
2016/10/27 Javascript
使用JavaScript实现表格编辑器(实例讲解)
2017/08/02 Javascript
vue项目部署上线遇到的问题及解决方法
2018/06/10 Javascript
React 项目迁移 Webpack Babel7的实现
2018/09/12 Javascript
详解Vue基于vue-quill-editor富文本编辑器使用心得
2019/01/03 Javascript
浅谈JavaScript_DOM学习篇_图片切换小案例
2019/03/19 Javascript
微信小程序swiper禁止用户手动滑动代码实例
2019/08/23 Javascript
JavaScript 预解析的4种实现方法解析
2019/09/03 Javascript
Vue通过WebSocket建立长连接的实现代码
2019/11/05 Javascript
JavaScript canvas实现跟随鼠标事件
2020/02/10 Javascript
element-ui tree结构实现增删改自定义功能代码
2020/08/31 Javascript
javascript实现一款好看的秒表计时器
2020/09/05 Javascript
详解vue3中组件的非兼容变更
2021/03/03 Vue.js
python缩进区别分析
2014/02/15 Python
使用Pyrex来扩展和加速Python程序的教程
2015/04/13 Python
基于Python实现对PDF文件的OCR识别
2016/08/05 Python
python编程嵌套函数实例代码
2018/02/11 Python
基于python代码实现简易滤除数字的方法
2018/07/17 Python
.net C#面试题
2012/08/28 面试题
史上最全面的Java面试题汇总!
2015/02/03 面试题
群众路线教育实践活动自我剖析思想汇报
2014/10/04 职场文书
2014年终个人工作总结
2014/11/07 职场文书
解决xampp安装后Apache无法启动
2022/03/21 Servers
Win11跳过联网界面创建本地管理账户的3种方法
2022/04/20 数码科技
MySQL查询日期时间
2022/05/15 MySQL