Django视图和URL配置详解

本文研究的主要是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是如何处理请求

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

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框架下在URLconf中指定视图缓存的方法
  • Django中URL视图函数的一些高级概念介绍
  • 在Django中创建URLconf相关的通用视图的方法
  • Django的URLconf中使用缺省视图参数的方法
  • Django中传递参数到URLconf的视图函数中的方法
  • 在Django的URLconf中使用多个视图前缀的方法
(0)

相关推荐

  • Django中URL视图函数的一些高级概念介绍

    说到关于请求方法的分支,让我们来看一下可以用什么好的方法来实现它. 考虑这个 URLconf/view 设计: # urls.py from django.conf.urls.defaults import * from mysite import views urlpatterns = patterns('', # ... (r'^somepage/$', views.some_page), # ... ) # views.py from django.http import Http404,

  • 在Django中创建URLconf相关的通用视图的方法

    抽取出我们代码中共性的东西是一个很好的编程习惯. 比如,像以下的两个Python函数: def say_hello(person_name): print 'Hello, %s' % person_name def say_goodbye(person_name): print 'Goodbye, %s' % person_name 我们可以把问候语提取出来变成一个参数: def greet(person_name, greeting): print '%s, %s' % (greeting,

  • 在Django的URLconf中使用多个视图前缀的方法

    在实践中,如果你使用字符串技术,特别是当你的 URLconf 中没有一个公共前缀时,你最终可能混合视图. 然而,你仍然可以利用视图前缀的简便方式来减少重复. 只要增加多个 patterns() 对象,象这样: 旧的: from django.conf.urls.defaults import * urlpatterns = patterns('', (r'^hello/$', 'mysite.views.hello'), (r'^time/$', 'mysite.views.current_da

  • Django的URLconf中使用缺省视图参数的方法

    一个方便的特性是你可以给一个视图指定默认的参数. 这样,当没有给这个参数赋值的时候将会使用默认的值. 例子: # urls.py from django.conf.urls.defaults import * from mysite import views urlpatterns = patterns('', (r'^blog/$', views.page), (r'^blog/page(?P<num>\d+)/$', views.page), ) # views.py def page(r

  • Django框架下在URLconf中指定视图缓存的方法

    将视图与缓存系统进行了耦合,从几个方面来说并不理想. 例如,你可能想在某个无缓存的站点中重用该视图函数,或者你可能想将该视图发布给那些不想通过缓存使用它们的人. 解决这些问题的方法是在 URLconf 中指定视图缓存,而不是紧挨着这些视图函数本身来指定. 完成这项工作非常简单: 在 URLconf 中用到这些视图函数的时候简单地包裹一个 cache_page .以下是刚才用到过的 URLconf : 这是之前的URLconf: urlpatterns = ('', (r'^foo/(\d{1,2

  • Django中传递参数到URLconf的视图函数中的方法

    有时你会发现你写的视图函数是十分类似的,只有一点点的不同. 比如说,你有两个视图,它们的内容是一致的,除了它们所用的模板不太一样: # urls.py from django.conf.urls.defaults import * from mysite import views urlpatterns = patterns('', (r'^foo/$', views.foo_view), (r'^bar/$', views.bar_view), ) # views.py from django

  • Django视图和URL配置详解

    本文研究的主要是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.contri

  • 使用PyCharm创建Django项目及基本配置详解

    pycharm是个很不错的python开发工具,大大缩短了python项目的创建时间以及调试时间 在使用python写脚本一段时间后,想尝试使用Django来编写一个python项目,现做以下记录备忘: 1.创建项目 如果本地没有安装与所选python版本对应Django版本,pycharm会自动下载相应的版本: 创建后运行项目,默认页面为http://127.0.0.1:8000/,打开后: 出现上面的页面,则正面项目创建成功 目录结构: 2.创建APP 在Django项目中可以包含多个APP

  • django中SMTP发送邮件配置详解

    Django中内置了邮件发送功能,被定义在django.core.mail模块中.发送邮件需要使用SMTP服务器,常用的免费服务器有:163.126.QQ,下面以qq邮箱为例. 注册qq邮箱,然后登录设置 找到设置里面POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务 3.需要发送验证码生成授权码 4.找到settings.py文件,中点击下图配置 EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBacken

  • Django 反向生成url实例详解

    Django中提供了一个关于URL的映射的解决方案, 1.客户端的浏览器发起一个url请求,Django根据URL解析,把url中的参数捕获,调用相应的试图,获取相应的数据,然后返回给客户端显示 2.通过一个视图的名字,再加上一些参数和值,逆向获取相应的URL 第一个就是平常的请求有URLconf来解析的过程, 第二个叫做,url的逆向解析,url逆向匹配,url的逆向查阅,等 Django提供了不同的层级的url逆向处理工具: 1.在模板templates中,使用url标记,如:{% url

  • Django视图扩展类知识点详解

    扩展类必须配合GenericAPIView使用扩展类内部的方法,在调用序列化器时,都是使用get_serializer 需要自定义get.post等请求方法,内部实现调用扩展类对应方法即可 . 一.mixins的视图子类 作用: 提供了几种后端视图(对数据资源进行曾删改查)处理流程的实现,如果需要编写的视图属于这五种,则视图可以通过继承相应的扩展类来复用代码,减少自己编写的代码量 . 这五个扩展类需要搭配GenericAPIView父类,因为五个扩展类的实现需要调用GenericAPIView提

  • Django模板标签中url使用详解(url跳转到指定页面)

    django {% url %} 模板标签使用 inclusions/_archives.html ... {% for date in date_list %} <li> <a href="{% url 'blog:archive' date.year date.month %}" rel="external nofollow" > {{ date.year }} 年 {{ date.month }} 月 </a> </l

  • 获取Django项目的全部url方法详解

    在为一个项目添加权限时,遇到一个问题,就是为项目所有的url设置权限,但是一个一个手动输入太麻烦了,所以考虑用代码获取到一个项目所有的url 首先,考虑到项目最外层的urlpartterns,因为所有的url都要通过这里 urlpatterns = [ # url(r'^admin/', admin.site.urls), url(r'^arya/', site.urls), url(r'^index/', index), ] 先循环打印一下这个列表,看一下拿到的结果: <RegexURLRes

  • django使用xadmin的全局配置详解

    这篇主要写一些xadmin一些基础的全局设置 主题设置 首先需要在创建好的app中新建一个adminx.py的文件,然后添加代码 # _*_ coding: utf-8 _*_ import xadmin from xadmin import views class BaseSetting(object): enable_themes=True use_bootswatch=True xadmin.site.register(views.BaseAdminView,BaseSetting) 全局

  • Python 中Django安装和使用教程详解

    一.安装 一般使用cmd 安装就可以 手动安装通过下载方式 django官方网站:https://www.djangoproject.com/ python官方仓库:https://pypi.python.org/pypi/Django 二.配置使用 1.通过cmd新建一个项目,我是在桌面新建 上面命令会在桌面新建pythonDjango文件夹,在里面会生成如下图两个文件 manage.py:命令行工具,可以用多种方式与该django项目进行交互: 在pythonDjango文件夹里面有4个.p

  • DJango的创建和使用详解(默认数据库sqlite3)

    1.安装虚拟环境 虚拟环境是真实python环境的复制版本. 安装虚拟环境的命令: 1)sudo pip install virtualenv #安装虚拟环境 2)sudo pip install virtualenvwrapper #安装虚拟环境扩展包 3)编辑家目录下面的.bashrc文件,添加下面两行. export WORKON_HOME=$HOME/.virtualenvs source /usr/local/bin/virtualenvwrapper.sh 4)使用source .b

随机推荐