簡體   English   中英

Django反向URL不匹配模式

[英]Django reverse url not matching pattern

來自tests.py

url = reverse('password_change_done', args =[self.mylog.token, self.john.password])

來自urls.py

url(r'^password_change_done/$', password_change_done, name='password_change_done'),

從views.py

def password_change_done(request, token=None, new_pass=None):
print(request.method)
if request.method =="POST":
    try:
        login_obj = LoginLog.objects.get(token=token)
        trust = login_obj.trust_obj.name
        new_pass = login_obj.login_obj.password
        new_pass = request.POST.get("new_pass")

        login_obj.login_obj.password = new_pass
        login_obj.login_obj.save()

        return render(request, 'password_change_done.html', {
            "Trust": request.POST.get("Trust"),
            "email": request.POST.get("email"),

        })

來自password_change_done.html

{% extends 'base.html' %}
{% block body %}
<h2>The password for {{Trust}}, {{email}} has been updated.</h2>
<br><br>
You can now close this window.
{% endblock %}

我有這個錯誤:

django.urls.exceptions.NoReverseMatch: Reverse for 'password_change_done' with arguments '('cc6f98fe-93ea-4cc2-97c5-a8b16b6308cc', 'pbkdf2_sha256$30000$zdbekeYMwQfC$WyW7FsZZg6hgWhmw6USs6etLVJlOnol6RmISFSlg1+4=')' and keyword arguments '{}' not found. 1 pattern(s) tried: ['password_change_done/$']

我認為反向模式正確使用了匹配項,為什么我會收到此錯誤?

您的網址格式沒有任何組:

url(r'^password_change_done/$', password_change_done, name='password_change_done'),

因此,您應該在沒有任何參數的情況下反轉它:

url = reverse('password_change_done')

由於password_change_done視圖僅顯示一條消息,說明密碼已更改,因此不需要任何參數。

網址password_change_done/不需要任何其他參數。 您可以像這樣反轉它:

url = reverse('password_change_done')

對於這種相反的情況:

url = reverse('password_change_done', args=[self.mylog.token, self.john.password])

相應的網址格式如下所示:

url(r'^password_change_done/(?P<token>.+)/(?P<b64pwd>.+)/$', password_change_done, name='password_change_done'),

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM