Django url的反向解析

在创建Django项目时,一个常见的需求时如何获得URL的最终形式以嵌入到所生成的Content中(即嵌入到视图中、或URL资源中,或者显示给用户的URL等)或着用于处理服务器端的导航流(如:重定向等)。但是,人们强烈希望不要硬编码这些URL或者设计一种与URLconf毫不相干的专门URL生成机制,因为这样容易导致一定程度上产生过期的URL。
Django提供了一个解决方案使得URL映射时URL设计唯一的储存库。你用你的URLconf填充它,然后可以双取向使用它。
● 根据用户/浏览器发起的URL请求,它调用正确的Django视图,并从URL中提取它的参数需要的值。
● 根据Django视图中的标识和将要传递给它的参数的值,获取与之关联的URL。
其中,第二种方式叫做反向解析URL、方向URL匹配、反向URL查询或者简单的URL反查。在需要URL的地方,对于不同层级,Django提供不同的工具用于URL反查:
● 在模版中:使用url模版标签
● 在Python代码中:使用django.core.urlresolvers.reverse()函数
● 在更高层次的雨处理Django模型是例相关代码中:使用get_absolute_url()方法
举个例子:
下面的URLconf:

from django.conf.urls import url
from . import views
urlpatterns = [
    #...
    url(r'^articles/([0-9]{4})/$', views.year_archive, name='news-year-archive'),
    #...
]

根据设计,某一年nnnn对应的归档的URL是/articles/nnnn/。
在模版的代码中使用下面的方法获取它们:

<a href="{% url 'news-year-archive' 2012 %}">2012 Archive</a>
<ul>
{% for yearvar in year_list %}
<li><a href="{% url 'news-year-archive' yearvar %}">{{ yearvar }} Archive</a></li>
{% endfor %}
</ul>

在Python代码中,这样使用:

from django.core.urlresolvers import reverse
from django.http import HttpResponseRedirect
def redirect_to_year(request):
    # ...
    year = 2006
    # ...
    return HttpResponseRedirect(reverse('news-year-archive', args=(year,)))
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,关于DjangoURL解析的定义方法,我来简单地介绍一下。 在Django中,URL解析是指将客户端请求的URL地址和对应的视图函数进行匹配的过程。Django中通过URLConf文件来定义URL解析规则,URLConf文件是一个Python模块,它包含了一个URL模式列表,每个URL模式都由一个正则表达式和一个视图函数组成。 下面是Django URL解析的定义方法: 1. 在某个应用(app)的目录下创建`urls.py`文件; 2. 导入Django的`urls`模块:`from django.urls import path`; 3. 定义一个URL模式列表,每个模式都由一个正则表达式和一个视图函数组成; 4. 使用`path()`函数定义URL模式,其中第一个参数是正则表达式,第二个参数是视图函数,第三个参数是该URL模式的名称,可以用于反向解析; 5. 在项目的`urls.py`文件中导入应用(app)的`urls.py`文件,并将该应用的URL模式列表加入到项目URL模式列表中。 下面是一个简单的例子: ```python # app_name/urls.py from django.urls import path from . import views urlpatterns = [ path('hello/', views.hello, name='hello'), ] ``` ```python # project_name/urls.py from django.urls import path, include urlpatterns = [ path('app_name/', include('app_name.urls')), ] ``` 在上面的例子中,定义了一个URL模式,当用户访问`/app_name/hello/`时,Django就会调用`views.hello`函数来处理请求。 以上就是DjangoURL解析的定义方法的简要介绍,希望能对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值