对于这个问题,我一直在摸不着头脑,似乎无法弄清楚我做错了什么。
所以,问题是我似乎无法从应用程序内的urls.py
中提取我想要的路径变量,以将其传递给访问路径时应该调用的函数。我试图获取它的URL配置是一个嵌套的,当一个访问事件时包含它,这是它的外观:
根URL配置:
urlpatterns = [
url(r'^api/', include(router.urls)),
url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')),
url(r'^admin/', admin.site.urls),
url(r'^events/', include(event_urls))
]
然后包含来自event_urls
的网址:
urlpatterns = [
url(r'alarm/<alarm>', alarm)
]
我想,应该是非常直接的,但上面的方法根本不起作用!如果我以这种方式构造URL,请求路径events / alarm / on将声明该路径不存在。在此之后,我认为它与URL不匹配,但我不明白为什么或如何解决它。我(从文档中)认为该部分可以匹配任何东西!
现在,我做了一些更多的调查,向我证明使用模式可能是正确的方法。添加正则表达式捕获路径变量使得函数实际触发!所以,在我这样做之后,URL匹配器更加快乐:
urlpatterns = [
url(r'alarm/(?P<alarm>)', alarm)
]
虽然,查看被调用的警报视图函数中的alarm
参数会将其显示为空...
答案 0 :(得分:0)
找到解决方案,添加一个正确的正则表达式,以匹配我希望<alarm>
部分到达的格式。我老实地仍然很困惑为什么简单地将<alarm>
放不起作用所以我欢迎解释!无论如何,这就是它现在在工作状态下的样子:
urlpatterns = [
url(r'alarm/(?P<alarm>\w+)', alarm)
]
这匹配任何长度的单词,我可以使它更加花哨但这是除了这个问题的重点。因此,匹配<alarm>
的内容是使其有效的原因。