1.Django 如何处理一个请求
(1). django 加载 ROOT_URLCONF(settings.py中配置的) 指定的模块,并寻找可用的urlpatterns变量.它是 django.conf.urls.url() 实例(每一条url就是一个实例)的一个Python 列表。
(2). 请求来了,Django 依次匹配每个 URL,在与请求的URL 匹配的第一个url停下来
(3). 一旦其中的一个正则表达式匹配上,Django 将导入并调用给出的视图,它是一个简单的 Python 函数(或者一个基于类的视图)。视图将获得如下参数:
参数一:一个HttpRequest 实例。
参数二:如果匹配的正则表达式返回了没有命名的组,那么正则表达式匹配的内容将作为 位置参数提供给视图。
参数三:关键字参数由正则表达式匹配的命名组组成,但是可以被django.conf.urls.url()的 可选参数kwargs覆盖。
(4). 如果没有匹配到正则表达式,或者如果过程中抛出一个异常,Django 将调用一个适当的错 误处理视图:handler404, handler500, handler403, handler400
2.URLconf:
  URLconf是一个python模块,是一个URL模式(简单正则表达式)到Python函数(视图)之间
的映射
3.urlpatterns:

  urlpatterns 是一个 url() 实例类型的Python 列表。
  urlpatterns 中的每个正则表达式在第一次访问它们时被编译
4.url函数:
  url(regex, view, kwargs=None, name=None)
  regex: 一个字符串(原始字符串就是前面加r)或简单的正则表达式
  view: view参数是一个视图函数或as_view()的结果(基于类的视图)
  kwargs: 传递额外的参数给视图
  name: url名称
5.include:
  include(module, namespace=None, app_name=None)
  include(pattern_list)
  include((pattern_list, app_namespace), namespace=None)
  include((pattern_list, app_namespace, instance_namespace))
  module: URLconf模块
  namespace:URL命名空间
  app_name: app的命名空间
  pattern_list: 可迭代的django.conf.urls.url()实例
  app_namespace: 应用的命名空间
  instance_namespace: 实例的命名空间
include 示例--两种写法
  示例1:
  urlpatterns = [
    url( r'^$', RedirectView.as_view(url="/dashboard/")),
    url(r'^dashboard/', include("dashboard.urls")),
    url(r'^accounts/', include("accounts.urls")),
    url(r'^admin/', admin.site.urls),
  ]
  示例2:
  urlpatterns = [
    url(r"^user/", include([
      url(r'^list/$', view.userlist, name="user_list"),
      url(r'^info/$', view.userinfo, name="userer_inf),
      url(r'^modify/', include([
        url(r'status/$',view.modifystatus, name="user_modify_status"),
      ]))
    ]))
  ]
6.url参数—位置参数:
若要从URL 中捕获一个值,只需要在它周围放置一对圆括号。
from django.conf.urls import url
from . import views
urlpatterns = [
  url(r'^articles/2003/$', views.special_case_2003),
  url(r'^articles/([0-9]{4})/$', views.year_archive),
  url(r'^articles/([0-9]{4})/([0-9]{2})/$', views.month_archive),
  url(r'^articles/([0-9]{4})/([0-9]{2})/([0-9]+)/$', views.article_detail),
]
请求地址: /articles/2003/03/03/
调用函数:views.article_detail(request, "2003", '03', '03')
7.url参数——关键字参数:有点特殊,因为它要传变量名
语法:
(?p<name>pattern)
name是传给视图参数的名字,
pattern是一个正则表达式,也是关键字参数的值
示例:
from django.conf.urls import url
from . import views
urlpatterns = [
  url(r'^articles/2003/$', views.special_case_2003),
  url(r'^articles/(?P<year>[0-9]{4})/$', views.year_archive),
  url(r'^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/$', views.month_archive),
  url(r'^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/(?P<day>[0-9]{2})/$',views.article_detail),
]
请求地址:/articles/2003/03/03/
调用函数:views.article_detail(request, year='2003', month='03', day='03').
8.url参数——额外参数:
URLconfs 具有一个钩子,让你传递一个Python 字典作为额外的参数传递给视图函数
django.conf.urls.url() 函数可以接收一个可选的第三个参数,它是一个字典,表示想要传递
给视图函数的额外关键字参数
示例:
from django.conf.urls import url
from . import views
urlpatterns = [
  url(r'^blog/(?P<year>[0-9]{4})/$', views.year_archive, {'foo': 'bar'}),
]
请求地址:/blog/2005/
调用函数:views.year_archive(request, year='2005',foo='bar')
9.URL反向解析:
django给每个URL取了一个名字,存储每个URL与name的映射关系
根据Django 视图的标识和将要传递给它的参数的值,获取与之关联的URL。这种方式叫做
反向解析URL、反向URL匹配、反向URL查询或者简单的URL反查。
from django.conf.urls import url
from . import views
urlpatterns = [
  url(r'^articles/([0-9]{4})/$', views.year_archive, name='news-year-archive'),
]
视图中使用:
from django.core.urlresolvers import reverse
year = 2006
return HttpResponseRedirect(reverse('news-year-archive', args=(year,)))
模板中使用:
<a href="{% url 'news-year-archive' yearvar %}">{{ yearvar }} Archive</a>
10.基于类的视图:
视图是一个可调用的对象,它接收一个请求然后返回一个响应,这个可调用对象可以不只
是函数,Django提供一些可以用作视图的类。
基于类的视图使用Python 对象实现视图,它提供除函数视图之外的另外一种方式
View
属性:
  http_method_names
方法:
  as_view()
  dispatch()
  http_method_not_allowed()
11.类视图登陆验证:
from django.contrib.auth.decorators import login_required
from django.utils.decorators import method_decorator
class FooView(View):
  @method_decorator(login_required)
  def get(request, *args, **kwargs):
    return HttpResponse("hello world")

六.url配置的更多相关文章

  1. 微信支付开发(1) 微信支付URL配置

    由于微信支付接口更新,本文档已过期,请查看新版微信支付教程.地址 http://www.cnblogs.com/txw1958/category/624506.html 本文介绍微信支付申请时如何设置 ...

  2. 视图和URL配置

    视图和URL配置 实验简介 上一章里我们介绍了如何创建一个Django项目并启动Django的开发服务器.本章你将学到用Django创建动态网页的基本知识. 同时,也教会大家怎么在本地机器上建立一个独 ...

  3. 微信支付v2开发(1) 微信支付URL配置

    本文介绍微信支付申请时如何设置授权目录及URL. 在申请微信支付时,第一项就会碰到下图的配置. 下面就对这一设置进行讲解! 一.选择支付类型 目前有两种支付类型 JS API网页支付 Native原生 ...

  4. 运维开发笔记整理-URL配置

    运维开发笔记整理-URL配置 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.URL路由 对于高质量的Web应用来说,使用简洁,优雅的URL的路由是一个非常值得重视的细节.Dja ...

  5. atitit.spring3 mvc url配置最佳实践

    atitit.spring3 mvc url配置最佳实践 1. Url-pattern  bp 1 2. 通用星号url pattern的问题 1 3. Other code 1 4. 参考 2 1. ...

  6. 微信支付开发1 微信支付URL配置

    本文介绍微信支付申请时如何设置授权目录及URL. 一.选择支付类型 目前有两种支付类型 JS API网页支付 Native原生支付 如果没有特殊要求,两种都勾选. 二.支付授权目录 目前可以选择htt ...

  7. django-高级视图和url配置

    高级视图和url配置 一.URLconf技巧 1.流线型化函数导入 对于配置url,我们可以使用以下几种方式: (1)引入view中的函数 from firstSite.view import cur ...

  8. Django里URL配置中name参数的作用

    先看一下URL配置,新增了如下内容: 修改视图views.py 增加一个页面 现在要求是在name页面里面增加一个链接,显示详细信息.修改name页面 这个功能实现了,可是之前添加的那个name参数是 ...

  9. python测试开发django-3.url配置

    前言 我们在浏览器访问一个网页是通过url地址去访问的,django管理url配置是在urls.py文件.当一个页面数据很多时候,通过会有翻页的情况,那么页数是不固定的,如:page=1.也就是url ...

随机推荐

  1. Java实现蓝桥杯VIP算法训练 小生物的逃逸

    试题 算法训练 小生物的逃逸 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 空间中有n个球,这些球不相交也不相切.有m个可以视为质点的小生物,可能在某些球内,也可能在所有球之外,但 ...

  2. Java实现 蓝桥杯VIP 算法训练 星际交流

    算法训练 星际交流 时间限制:1.0s 内存限制:256.0MB 问题描述 人类终于登上了火星的土地并且见到了神秘的火星人.人类和火星人都无法理解对方的语言,但是我们的科学家发明了一种用数字交流的方法 ...

  3. java实现第三届蓝桥杯填算式

    ** 填算式** [结果填空] (满分11分) 看这个算式: ☆☆☆ + ☆☆☆ = ☆☆☆ 如果每个五角星代表 1 ~ 9 的不同的数字. 这个算式有多少种可能的正确填写方法? 173 + 286 ...

  4. java实现第七届蓝桥杯方格填数

    方格填数 题目描述 如下的10个格子 +--+--+--+ | | | | +--+--+--+--+ | | | | | +--+--+--+--+ | | | | +--+--+--+ (如果显示 ...

  5. java实现第八届蓝桥杯树型显示

    树型显示 题目描述 对于分类结构可以用树形来形象地表示.比如:文件系统就是典型的例子. 树中的结点具有父子关系.我们在显示的时候,把子项向右缩进(用空格,不是tab),并添加必要的连接线,以使其层次关 ...

  6. Linux 独立服务管理

    RPM包安装在默认位置 /etc/init.d/:启动脚本位置 /etc/sysconfig/:初始化环境配置文件位置 /etc/:配置文件位置 /etc/xinetd.conf/:xinetd配置文 ...

  7. 运行ABP(asp.net core 3.X+Vue)提示'OFFSET' 附近有语法错误。 在 FETCH 语句中选项 NEXT 的用法无效。

    创建ASP.NET Boilerplate,还原数据库和启动客户端 这里就略过,具体参考 ABP框架(asp.net core 2.X+Vue)模板项目学习之路(一) ASP.NET Boilerpl ...

  8. 给女朋友讲解什么是Git

    前言 在周六发现了Linus去Google演讲的一个视频,当时还发了一条朋友圈: 有兴趣的同学也可以去看看,一点儿也不无聊,在线看Linus大佬怼人 https://www.bilibili.com/ ...

  9. php5.5下安装pdflib的步骤

    php5.5下安装pdflib的步骤 1. 下载pdflib 下载地址为:http://www.pdflib.com/download/pdflib-family/pdflib/ 然后选择对应的版本, ...

  10. @bzoj - 5104@ Fib数列

    目录 @description@ @solution@ @accepted code@ @details@ @description@ Fib数列为1,1,2,3,5,8... 求在Mod10^9+9 ...