【问题标题】:How can I set a url that takes one parameter with aphanumeric string?如何设置一个带有字母数字字符串的参数的 url?
【发布时间】:2012-02-14 05:06:39
【问题描述】:

我正在尝试做的事情:

url(r'^confirmemail/[a-bA-z0-9]+/', 'blog.views.confirmemail'),

确切的网址应该是这样的:http://127.0.0.1:8000/confirmemail/tubwp2n0a6 或 http://127.0.0.1:8000/confirmemail/tubwp2n0a6/

字符串参数的长度为十(10)。

如何在 urls.py 中写入该 url?

【问题讨论】:

    标签: python django url django-urls


    【解决方案1】:

    这是你想要的吗?

    url(r'^confirmemail/[a-zA-Z0-9]{10}/', 'blog.views.confirmemail')
    

    编辑:请参阅 Alexander Artemenko 的答案以获得更完整的解决方案。

    【讨论】:

    • 我认为你必须在 Django 中使用正则表达式周围的捕获表达式(没有设置它,所以我现在无法测试)。如果您希望它更短一点(并带有捕获表达式),您可以使用字符类: url(r'^confirmemail/([\w\d]{10})/', 'blog.views.confirmemail')
    • 加斜线和不加斜线有区别吗?喜欢:url(r'^confirmemail/[a-zA-Z0-9]{10}/', 'blog.views.confirmemail') 或 url(r'^confirmemail/[a-zA-Z0-9]{10}/', 'blog.views.confirmemail')
    • 你弄错了,应该是 `url(r'^confirmemail/([a-zA-Z0-9]{10})/$', 'blog.views.confirmemail')
    • @guru:$ 不是必需的,但它有助于确保不捕获尾随垃圾。
    • @guru:啊,是的,你是对的。它们不在最初的问题中,而且我没有洞察力看到它们在这里有用。
    【解决方案2】:

    url(r'^confirmemail/(?P<code>[a-zA-Z0-9]+)/', 'blog.views.confirmemail'),

    或

    url(r'^confirmemail/(?P<code>[a-zA-Z0-9]{10})/', 'blog.views.confirmemail'), 将长度限制为 10 个符号。

    【讨论】:

    • 什么是?P<code>?放置斜线与不放置斜线之间有什么区别吗?喜欢:url(r'^confirmemail/(?P<code>[a-zA-Z0-9]{10})/', 'blog.views.confirmemail'), 或 url(r'^confirmemail/(?P<code>[a-zA-Z0-9]{10})', 'blog.views.confirmemail'),
    • (?P<code>...) 说 Django 捕获 URL 的一部分并将其作为名称为 code 的命名参数传递给视图。通常可以省略结尾斜杠,如果你不想它。
    猜你喜欢
    • 2023-03-19
    • 2019-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-27
    • 2017-02-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多