无法将参数从html传递给查看函数

时间:2015-11-02 16:25:02

标签: html django django-views django-urls

我一直在敲打我的脑袋,暂时解决这个问题一天。

我正在使用Django password_reset_confirm视图来处理来自用户的密码更改请求。

我收到错误,如screenshot所示。

Reverse mismatch for 'password_reset_confirm'

这是我的html,用于呈现表单。

<div>
    <h1></h1>
    <form id='reset-password-form' action="{% url 'password_reset_confirm'  uidb64=uidb64 token=token %}" method="post">
        {% csrf_token %}
        {{form|foundation }}
        {{title}}
        {{validlink}}
        <div id='submit-button'>
            <input type="submit" id='submit-reset-form'>
        </div>
    </form>
</div>

网址映射如下:

url(r'^reset/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$',password_reset_confirm, {'set_password_form':ResetPasswordForm,'template_name':'email/password_reset/password_enternew_password.html',}
    ,name='password_reset_confirm')

任何人都可以告诉我,错误在哪里?

1 个答案:

答案 0 :(得分:2)

uidb64token未传递到模板上下文,因此您无法在url标记中使用它们。

最简单的解决方法是从表单中删除action属性。这样可以防止反向匹配错误,表单将提交给当前的url,这是正确的。

如果您查看主分支中django.contrib.admin应用附带的password reset confirm template代码,您会发现它没有动作属性。早期版本的Django有action="",但这在HTML5中无效。