imn*_*mns 2 python regex django
我在用
import base64
string_for_url = base64.urlsafe_b64encode(string_to_format)
Run Code Online (Sandbox Code Playgroud)
但我不确定如何匹配url模式中生成的字符串.我找到了这个正则表达式:(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$但是我不明白如何将它转换为命名组.你可以告诉我的正则表达式知识非常有限.
在此先感谢您的帮助.
要命名一个组,以便将它传递给您的视图方法前缀(?P<name_of_variable>(group to name)).顺便说一句,这不是django特有的,它是标准Python 正则表达式语法的一部分.
对于你的例子,它将是:
base64_pattern = r'(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$'
urlpatterns = patterns('',
(r'^foo/bar/(?P<base64string>{})'.format(base64_pattern), 'mymethod'),
# your other patterns
)
# in the view
def mymethod(request, base64string):
# do stuff with base64string
Run Code Online (Sandbox Code Playgroud)
那个正则表达式似乎不必要地复杂化了.
我的Django生锈了,但你应该能够做到:
urlpatterns = patterns('',
(r'things/(?P<b64_string>.+)', views.b64_view, name='b64_view')
)
Run Code Online (Sandbox Code Playgroud)
这将匹配任何看起来像www.example.com/things/abc123=的内容,并将'abc123 ='传递给views.b64_string视图的b64_string参数.
然后你可以通过尝试解码它来测试它是b64编码.这比尝试找到与b64编码的字符串匹配的正则表达式要简单得多.
| 归档时间: |
|
| 查看次数: |
5022 次 |
| 最近记录: |