django 1.7 如何将参数传递给函数正则表达式
Posted
技术标签:
【中文标题】django 1.7 如何将参数传递给函数正则表达式【英文标题】:django 1.7 how to pass arguments to function regular expressions 【发布时间】:2014-10-09 22:24:28 【问题描述】:我正在尝试将表的 ID 传递给我的函数,但我不确定发生了什么。 如果我对 ID 号进行硬编码,如果我将 (?Pd+) 与 d+ 一起使用,则它使用尽可能多的数字,就像在教程中一样。不起作用。这应该不同吗?
谢谢大家。
我的网址
from django.conf.urls import patterns, include, url
from polls import views
urlpatterns = patterns('',
#url(r'^main_site/$', views.main_site),
url(r'^vote/$', views.vote),
url(r'^stadistics/$', views.stadistics),
# using it like this doesn't work
url(r'^vote/Restaurant_Info/(?P<rest_id>d+)/$', views.restaurant_menu),
#testing the info of the restaurant
# hard coding the id of the restaurant does work
url(r'^vote/Restaurant_Info/4/$', views.restaurant_menu),
我的看法
def restaurant_menu(request, rest_id="0"):
response = HttpResponse()
try:
p = Restaurant.objects.get(id=rest_id)
response.write("<html><body>")
response.write("<p>name of the restaurant</p>")
response.write(p.name)
response.write("</body></html>")
except Restaurant.DoesNotExist:
response.write("restaurant not found")
return response
【问题讨论】:
【参考方案1】:您的表达式中缺少反斜杠,目前d+
匹配字符d
字面意思是“一次或多次”。反斜杠与文字字符组合创建具有特殊含义的正则表达式标记。
因此,\d+
将匹配数字 0
到 9
“一次或多次”。
url(r'^vote/Restaurant_Info/(?P<rest_id>\d+)/$', views.restaurant_menu)
【讨论】:
感谢您的解释,我认为是 django,但我应该研究 RE,它对字符串的工作方式是否相同?比如 url(r'^/vote/thanks/(?P你少了一个斜线。应该是(?P<rest_id>\d+)
【讨论】:
【参考方案3】:url(r"^vote/Restaurant_Info/(?P<rest_id>\d+)/$", views.restaurant_menu),
【讨论】:
以上是关于django 1.7 如何将参数传递给函数正则表达式的主要内容,如果未能解决你的问题,请参考以下文章
如何将正则表达式参数传递给 PHP 中的 preg 替换回调?
如何将从表单提交中检索到的参数作为参数传递给 django 中的函数
Apache Tomcat 1.7 如何将附加参数传递给 JAAS