python - Django url 模式正则表达式将电子邮件作为 url 中的参数传递

标签 python regex django

我正在编写一个 View ,它接受电子邮件作为由 url 传递的参数,例如

url(r'^admin/detail_consultant_service/((?P<consultant_id>\[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}))/$',
            'admin_tool.views.consultant_service_detail', name="consultant_service_detail"),

这是我模板的内容

{% for consultant in list_consultants %}
    <li>
        {{consultant.id}}
        <a href="{% url consultant_service_detail consultant.id %}">{{ consultant|disp_info }}</a> <br/>
    </li>
{% endfor %}

但是当我访问 url 时出现错误

everse for 'consultant_service_detail' with arguments '(u'rahul183@gmail.com',)' and keyword arguments '{}' not found.

请帮我解决我的正则表达式为什么不接受这封邮件的问题。这是问题还是其他原因?

最佳答案

您传递的是位置参数而不是关键字参数。以下应该有效:

{% url consultant_service_detail consultant_id=consultant.id %}

此外,如果您使用的是 Django>=1.5,则应按如下方式使用 url:

{% url 'consultant_service_detail' consultant_id=consultant.id %}

因为这是一种新行为,您实际上(推荐)在早期版本的 Django(我认为 >=1.3)中使用:

{% load url from future %}
{% url 'view_name' ... %}

根据 here,我认为正则表达式很好所以问题很可能出在定义本身。试试这个:

url(r'^admin/detail_consultant_service/(?P<consultant_id>[\w.%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4})/$',
    'admin_tool.views.consultant_service_detail',
    name="consultant_service_detail"),

所以一个有效的 url 将类似于:

foo.com/admin/detail_consultant_service/email.address@here.com/

关于python - Django url 模式正则表达式将电子邮件作为 url 中的参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17429088/

相关文章:

python - Django中的静态文件和媒体文件有什么区别?

python - eBay API 在沙盒中返回 'Application ID invalid',但在生产中有效

ios - 正则表达式搜索效率

python - Django 指向错误版本的 Postgres

Java Pattern.quote

regex - 如何为 CTest 指定正则表达式

python - 添加到 models.py 后“NOT NULL 约束失败”

Python 登录 Voobly

python - Django 1.7 google oauth2 token 验证失败

python - 如何填写 Pandas 数据框中的任意缺失日期?