django url 路由设置技巧

Django的url使用方法
利用Django开发站点。能够设计出很优美的url规则,假设url的匹配规则(包括正則表達式)组织得比較好,view的结构就会比較清晰。比較easy维护。
最简单的形式
from django.conf.urls import patterns, url
urlpatterns = patterns(‘‘,
    url(r‘^articles/2003/$‘, ‘news.views.special_case_2003‘),
    url(r‘^articles/(\d{4})/$‘, ‘news.views.year_archive‘),
    url(r‘^articles/(\d{4})/(\d{2})/$‘, ‘news.views.month_archive‘),
    url(r‘^articles/(\d{4})/(\d{2})/(\d+)/$‘, ‘news.views.article_detail‘),
)
当中,正則表達式中组匹配出来的结果能够作为positional parameters传递给view.
假设url是www.yourdomain/articles/2005/,则会匹配第二条规则,运行news.views.year_archive(‘2005‘).
注意点
域名部分会被过滤掉
articles的前面不须要加入/,由于前序url的末尾一定会有/
不论什么组匹配的变量,都会议字符串的形式传递给view, 尽管通过(\d{4})匹配出了2005,但2005任然会被当做字符串传递给year_archive
利用named group来传递參数
能够通过下面形式为特定的组指定一个名称.
urlpatterns = patterns(‘‘,
    url(r‘^articles/2003/$‘, ‘news.views.special_case_2003‘),
    url(r‘^articles/(?P<year>\d{4})/$‘, ‘news.views.year_archive‘),
    url(r‘^articles/(?P<year>\d{4})/(?P<month>\d{2})/$‘, ‘news.views.month_archive‘),
    url(r‘^articles/(?P<year>\d{4})/(?P<month>\d{2})/(?P<day>\d{2})/$‘, ‘news.views.article_detail‘),
)

这种的话,组的匹配结果会通过keyword parameters的形式传递给view.比如year_archive(year=‘2005‘)

利用named group能够为view指定一个默认參数来匹配多条规则。
# URLconf
from django.conf.urls import patterns, url

urlpatterns = patterns(‘‘,
    url(r‘^blog/$‘, ‘blog.views.page‘),
    url(r‘^blog/page(?P<num>\d+)/$‘, ‘blog.views.page‘),
)

# View (in blog/views.py)
def page(request, num="1"):
    # Output the appropriate page of blog entries, according to num.

指定view前缀(提取公因式)
patterns函数的第一个參数即是view的前缀
from django.conf.urls import patterns, url
urlpatterns = patterns(‘news.views‘,
    url(r‘^articles/(\d{4})/$‘, ‘year_archive‘),
    url(r‘^articles/(\d{4})/(\d{2})/$‘, ‘month_archive‘),
    url(r‘^articles/(\d{4})/(\d{2})/(\d+)/$‘, ‘article_detail‘),
)

指定多个view前缀
urlpatterns = patterns(  ‘myapp.views‘, # 在第一个参数中直接指定到视图所在的py文件中, 当匹配的是方法视图时,直接写上方法视图即可
    url(r‘^$‘, ‘app_index‘),
    url(r‘^(?P<year>\d{4})/(?P<month>[a-z]{3})/$‘,‘month_display‘),
)
urlpatterns += patterns(  ‘weblog.views‘, # 指定第二个view文件, 路由到其中的视图
    url(r‘^tag/(?P<tag>\w+)/$‘, ‘tag‘),
)

include其他匹配模块
from django.conf.urls import include, patterns, url

urlpatterns = patterns(‘‘,
    # ... snip ...
    url(r‘^comments/‘, include(‘django.contrib.comments.urls‘)),
    url(r‘^community/‘, include(‘django_website.aggregator.urls‘)),
    url(r‘^contact/‘, include(‘django_website.contact.urls‘)),
    # ... snip ...
)
当然也能够直接include其他patterns
from django.conf.urls import include, patterns, url
extra_patterns = patterns(‘‘,
    url(r‘^reports/(?P<id>\d+)/$‘, ‘credit.views.report‘),
    url(r‘^charge/$‘, ‘credit.views.charge‘),
)

urlpatterns = patterns(‘‘,
    url(r‘^$‘, ‘apps.main.views.homepage‘),
    url(r‘^help/‘, include(‘apps.help.urls‘)),
    url(r‘^credit/‘, include(extra_patterns)),
)

为view函数传递额外參数
from django.conf.urls import patterns, url
urlpatterns = patterns(‘blog.views‘,
    url(r‘^blog/(?P<year>\d{4})/$‘, ‘year_archive‘, {‘foo‘: ‘bar‘}),
)
直接使用view函数
from django.conf.urls import patterns, url
from mysite.views import archive, about, contact

urlpatterns = patterns(‘‘,
    url(r‘^archive/$‘, archive),
    url(r‘^about/$‘, about),
    url(r‘^contact/$‘, contact),
)

原文地址:https://www.cnblogs.com/lowmanisbusy/p/9710840.html

时间: 2024-11-11 10:38:51

django url 路由设置技巧的相关文章

Django URL路由分发系统

Django  URL路由分发系统 URL匹配过程 在Django中,我们使用urls.py模块处理url的分发 例:http://127.0.0.1:8080/abindex?a=1 1)去除域名和端口以及 /,剩下 abindex?a=1 2)拿 abindex?a=1 先到项目的 url.py 去匹配,然后拿剩下的index再到应用下面的urls.py去匹配 3)如果匹配成功,则调用相应的视图函数产生的内容返回给客户端.匹配失败的话则返回404错误. from django.conf.ur

Django的路由设置

Django 的URL路由系统 1.基本设置 URL配置(URLconf)就像Django 所支撑网站的目录.其本质是url与视图函数之间的映射. urlpatterns = [ url(正则表达式, views视图函数,参数,别名), ] 参数说明: 一个正则表达式字符串,用于匹配url: 一个可调用对象,通常为一个视图函数或一个指定视图函数路径的字符串: 可选的要传递给视图函数的默认参数(字典形式): 一个可选的name参数. 2.url 传参的 命名与无命名 urlpatterns = [

django url路由参数错误

出现错误: TypeError get() got an unexpected keyword argument 'teacher_id 出错原因: view类中,get方法获得了一个多余的额参数,这个参数是通过url正则表达式模版取出的数据,url传递过来的参数 如何解决? get方法中再次增加一个参数去接收这个值,和url中取得正则匹配值声明的参数一样 #!/usr/bin/python3 __author__ = 'beimenchuixue' __blog__ = 'http://www

Django 基础(一),项目创建,URL路由,数据库操作

一.安装Django 下载地址:https://www.djangoproject.com/download/ 1.tar zxvf Django-1.8.10.tar.gz 2.cd Django-1.8.10 3.python setup.py install 二.创建一个Django项目 django-admin startproject sitename 常用命令: python manage.py runserver 0.0.0.0 python manage.py startapp

Django URL(路由系统)

Django URL Django 1.11版本 URLconf官方文档 URL配置(URLconf)就像 Django 所支撑网站的目录.它的本质是URL模式以及要为该URL模式调用的视图函数之间的映射表:就是以这种方式告诉Django,对于这个URL调用这段代码,对于那个URL调用那段代码. 一.URLconf 基本格式: from django.conf.urls import url urlpatterns = [ url(正则表达式, views视图函数,参数,别名), ] 参数说明:

django中url路由配置及渲染方式

今天我们学习如何配置url.如何传参.如何命名.以及渲染的方式,内容大致有以下几个方面. 创建视图函数并访问 创建app django中url规则 捕获参数 路径转换器 正则表达式 额外参数 渲染方式 创建视图并访问 项目中自带的Python文件中,并没有带有视图,因此我们自己创建一个,通常,我们把视图命名views.py. 然后在views.py中,导入头文件  from django.http import HttpResponse 然后我们在views.py中,写一些Python函数,用来

python 之 Django框架(路由系统、include、命名URL和URL反向解析、命名空间模式)

12.36 Django的路由系统 基本格式: from django.conf.urls import url urlpatterns = [ url(正则表达式, views视图函数,参数,别名), ] ? 正则表达式: 一个正则表达式字符串 views视图函数:一个可调用对象,通常为一个视图函数或一个指定视图函数路径的字符串 参数: 可选的要传递给视图函数的默认参数(字典形式) 别名: 一个可选的name参数 12.361 路由正则表达式 from django.conf.urls imp

Azure Application Gateway (4) 设置URL路由 - PowerShell

<Windows Azure Platform 系列文章目录> 本文将介绍如果使用Azure PowerShell,创建Azure Application Gateway URL Routing 请读者在使用之前,请先查看笔者之前的文章:Azure Application Gateway (3) 设置URL路由,熟悉相关的内容 注意:Azure Application Gateway必须在ARM模式下才可以创建. 另外PowerShell模式下,和Portal创建的不一样. PowerShel

人生苦短,我用python-- Day19 django框架之URL路由系统、视图应用、模板应用、django之orm应用

目录 一.django的URL应用 二.django的视图应用 三.django的模板应用 四.django的orm应用 补充: 补充一:getlis 应用场景:当前端发送的数据为多个的时候,后台如果还用get获取数据,那么就会出问题,所以这里有一个getlist方法进行数据的获取. 试验案例:当前端有一个多选的checkbox的时候,那么就要使用getlist进行获取数据了 urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^get