我现在有一个django视图,它有一个相当简单的搜索函数(接受用户输入,返回对象列表)。对于可用性,我希望通过url传递搜索参数的选项如下:
你知道吗www.example.com/search/mysearchstring你知道吗
其中mysearchstring是搜索函数的输入。我使用regex来验证任何字母数字或下划线字符。你知道吗
我遇到的问题是,虽然这在我的开发环境中工作得很好,但它在实时机器上会中断。
目前,我在其他django视图中使用完全相同的方法(使用不同的regex模式),没有任何问题。这也让我相信。你知道吗
1)我的正则表达式非常糟糕(更有可能)
2)不同环境的regex验证器存在差异(可能性较小)
运行这个程序的机器使用的是django1.6和python2.7,它们稍微落后于我的开发机器,但并不显著。你知道吗
你知道吗网址.py你知道吗
SEARCH_REGEX = '(?P<pdom>\w*)?'
urlpatterns = patterns('',
....
url(r'^polls/search/' + SEARCH_REGEX, 'polls.views.search'),
...)
像这样传递到视图中 意见。py公司
def search(request, pdom):
...
加载页面时,出现以下错误:
ImproperlyConfigured: "^polls/search/(?P<pdom>\w*)?" is not a valid regular expression: nothing to repeat
我已经为这个挠头好一阵子了。我试着在结果没有变化的情况下使用一些不同的方法来封装表达式。如果您有任何见解,我将不胜感激!你知道吗
我会改成这样:
在python中,对正则表达式使用原始字符串
r''
通常是个好主意。你知道吗该组将匹配url搜索部分的全部内容。我将在视图中处理查询字符串验证,而不是在url regex中。如果有人试图搜索
polls/search/two+words
,则不应返回404,而是返回400状态和错误消息,说明搜索字符串的格式不正确。你知道吗最后,您可能希望遵循搜索url的通用约定。它使用一个名为
q
的查询参数。因此,您的url模式将是^polls/search/$
,然后您只需使用如下方式处理视图中的q
:相关问题 更多 >
编程相关推荐