Django - url在重定向时不匹配任何模式

时间:2017-09-20 03:24:29

标签: python django django-views

我正在开发一个django项目,我有一个html网页,我想通过网页传递一个Id并通过该ID,更新一条记录。我有网址设置和html页面网址重定向。我正在传递url中所需的内容,但是我得到了一个模式匹配错误。我尝试了一切,由于某种原因,它无法正常工作。有没有人知道什么是oging或可以帮助我找出导致此错误的原因。我将附上以下所有信息:

这是网址链接:

url(r'^(?P<source_id>[\w+][0-9]+)/default_source/$', views.setDefaultSource, name='default_source'),

这是html文件:

<p>{{account.user.username}}, {{ account.source_name }}, {{ account.source_id }},
{{ account.status }}
<a href="{% url 'default_source' account.source_id %}">Make Default</a>

这是views.py:

def setDefaultSource(request, source_id):
    currentUser = loggedInUser(request)
    currentSource = Dwolla.object.get(source_id = source_id)

    update_source = currentSource
    update_source.status = 2
    update_source.save()

    return redirect('home_page')

以下是我收到的错误:

NoReverseMatch at /linked_accounts/
Reverse for 'default_source' with arguments '('https://api-sandbox.dwolla.com/funding-sources/3021030d-0175-41f1-8bce-4625b8eae0fc',)' not found. 1 pattern(s) tried: ['(?P<source_id>[\\w+][0-9]+)/default_source/$']

2 个答案:

答案 0 :(得分:0)

您的正则表达式似乎与source_id

不匹配
[\w+][0-9]+

enter image description here

如果3021030d-0175-41f1-8bce-4625b8eae0fc是您的source_id的样子,请尝试:

[\w+-]+

或更复杂的正则表达式。

答案 1 :(得分:0)

只需将您的网址格式更改为,

url(r'^(?P<source_id>[\w-]+)/default_source/$', views.setDefaultSource, name='default_source'),