Django休息框架 - 包括用于身份验证的URL

时间:2014-06-22 22:24:44

标签: django django-rest-framework

我在这里关注DJango休息框架教程:

http://www.django-rest-framework.org/tutorial/4-authentication-and-permissions#adding-login-to-the-browsable-api

并且,在文件末尾添加一个模式以包含可浏览API的登录和注销视图。

urlpatterns += patterns('',
    url(r'^api-auth/', include('rest_framework.urls',
                               namespace='rest_framework')),
)

它说:

  

r'^ api-auth /'模式的一部分实际上可以是你的任何URL   想用。唯一的限制是所包含的网址必须使用   'rest_framework'命名空间。

我不明白为什么会这样,即。为什么字符串“api-auth”无关紧要,它似乎正常运行正则表达式中的任何字符串XXXX

1 个答案:

答案 0 :(得分:1)

就像你r'/admin'无关紧要。在一般意义上,它只是字符串的映射a,将url请求与基于类或函数的视图相匹配。从概念上讲,它与下面的字典相同:

{
 'add': lambda x, y: x + y,
 'subtract': lambda x,y: x - y
 ... ect. ...
}

除Django外,keyaddsubtract是正则表达式网址格式,'SomeView.as_view()'lambda个函数。像这样:

{
 r'^about/$': TemplateView.as_view(template_name='pages/about.html'),
 r'^admin/': include(admin.site.urls)
}

当您include('rest_framework.urls')Django Rest-Framework自己的网址格式映射到视图时,就像上面的内容一样。你可以把它想象成一个嵌套的词典:

{
 r'^about/$': TemplateView.as_view(template_name='pages/about.html'),
 r'^admin/': {
   r'^about/$': TemplateView.as_view(template_name='pages/about.html'),
   r'^admin/': include(admin.site.urls)
   }
}

有关django如何处理请求的更多信息,请参阅django docs here