Django urls配置方式

例子以上一篇随笔中的blog应用进行.

urls.py默认生成的格式如下:

 

 1 """whsweb URL Configuration
 2 
 3 The `urlpatterns` list routes URLs to views. For more information please see:
 4     https://docs.djangoproject.com/en/1.8/topics/http/urls/
 5 Examples:
 6 Function views
 7     1. Add an import:  from my_app import views
 8     2. Add a URL to urlpatterns:  url(r'^$', views.home, name='home')
 9 Class-based views
10     1. Add an import:  from other_app.views import Home
11     2. Add a URL to urlpatterns:  url(r'^$', Home.as_view(), name='home')
12 Including another URLconf
13     1. Add an import:  from blog import urls as blog_urls
14     2. Add a URL to urlpatterns:  url(r'^blog/', include(blog_urls))
15 """
16 from django.conf.urls import include, url
17 from django.contrib import admin
18 
19 urlpatterns = [
20     url(r'^admin/', include(admin.site.urls)),
21 ]

第一种方式:应用.视图.方法

url(r'^blog/index/$','blog.views.archive')

这个就表示访问url匹配r'^blog/index/$'正则表达式的情况下,网页呈现blog应用下views视图中的archive方法

第二用方式:调用对象

头部导入对象:

from blog.views import archive

url(r'^blog/index/$',archive)

第三种方式:构建patterns赋值

头部记得导入

from django.conf.urls import include, url,patterns
使用patterns方法赋值给urlpatterns对象
urlpatterns =patterns('blog.views'
  url(r'^blog/index/$','archive')               
)

第四种方式:包含其他url

url(r'^blog/', include('blog.urls')),直接包含blog下的urls配置。

url方法:

def url(regex, view, kwargs=None, name=None, prefix=''):
    if isinstance(view, (list, tuple)):
        # For include(...) processing.
        urlconf_module, app_name, namespace = view
        return RegexURLResolver(regex, urlconf_module, kwargs, app_name=app_name, namespace=namespace)
    else:
        if isinstance(view, six.string_types):
            warnings.warn(
                'Support for string view arguments to url() is deprecated and '
                'will be removed in Django 2.0 (got %s). Pass the callable '
                'instead.' % view,
                RemovedInDjango20Warning, stacklevel=2
            )
            if not view:
                raise ImproperlyConfigured('Empty URL pattern view name not permitted (for pattern %r)' % regex)
            if prefix:
                view = prefix + '.' + view
        return RegexURLPattern(regex, view, kwargs, name)

可以看到url参数可以采用三种方式配置:1、list 2、tuple 3、string

include方法返回的是tuple

 

posted @ 2015-05-23 19:29  小伟、  阅读(1911)  评论(0编辑  收藏  举报