Django:Pass extra_context 至 reset_password 查看并接收给定模板中的 extra_context
Django:Pass extra_context to reset_password view and receive the extra_context in given template
我正在尝试将密码重置视图直接从 url 重定向到另一个模板,如下所示:
url(r'^accounts/password/reset/', password_reset, {'template_name':'users/login.html', 'extra_context':{'reset':'1'}, 'post_reset_redirect':'/users/accounts/login'}, name='password_reset'),
我已经传递了我需要在模板中使用的上下文。
在我的 'users/login.html' 模板中,我尝试使用:
console.log('{{reset}}');
但是控制台没有任何显示。
是不是少了什么?或者我以错误的方式访问上下文?
URL 模式:
urlpatterns = [
url(r'^accounts/login/', web_login, name='web_login'),
url(r'^accounts/password/reset/', password_reset, {'template_name':'users/login.html', 'extra_context':{'reset':'1'}, 'post_reset_redirect':'/users/accounts/login'}, name='password_reset'),
url(r'^signup/', web_signup, name='web_signup'),
url(r'^create_role/', create_role, name='create_role'),
url(r'^activate/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$',
views.activate, name='activate'),]
模板:users/login.html
<div class="tab-pane fade" id="pills-thankyou" role="tabpanel" aria-labelledby="pills-thankyou-tab">
<h5 class="mb-3">
Success!
</h5>
<p>
We have sent you an email with reset instructions.
</p>
<p>
If the email does not arrive soon, check your spam folder. It was sent from <strong>support@fieldsight.org</strong>.
</p>
<button type="button" id="btn-backtologin" class="btn btn-secondary"><i class="la la-long-arrow-left"></i> Back to Login</button>
</div>
<div class="tab-pane fade" id="pills-reset" role="tabpanel" aria-labelledby="pills-reset-tab">
<h5 class="mb-3">
Forgot your password?
</h5>
<p>
Don't worry. Resetting your password is easy, just tell us the email address you registered with <strong>Fieldsight</strong>.
</p>
<form method="post" action="/users/accounts/password/reset/">
{% csrf_token %}
<div class="form-group">
<label for="inputResetEmail">Email address</label>
<input type="email" name="email" class="form-control" id="inputResetEmail" required>
</div>
<button type="submit" class="btn btn-secondary" id="btn-resetpassword"><i class="la la-send" ></i> Submit</button>
<button type="button" id="btn-backtologinfromreset" class="btn btn-secondary"><i class="la la-long-arrow-left"></i> Back to Login</button>
</form>
</div>
JavaScript:
if('{{reset}}'=='1'){
$('#pills-reset').removeClass('active show');
$('#pills-thankyou').tab('show');
fn_login_eqheight();
fn_login_vertically_center();
}
console.log('{{reset}}');
我什至尝试使用 {{ form.reset }}
但结果是空的。
在我的 HTML 控制台中:
if(''=='1'){
$('#pills-reset').removeClass('active show');
$('#pills-thankyou').tab('show');
fn_login_eqheight();
fn_login_vertically_center();
}
console.log('');
在寻找一些解决方案后,我想出了 url 中的 'post_reset_redirect':'/users/accounts/login'
重定向到我的 web_login
视图函数的想法。
然后我能够在我的 web_login
视图中捕获从 password_reset
视图传递的 extra_context
使用:
reset = request.GET.get('reset')
然后我在我的模板中传递了这个变量,之后实现了所需的功能。
感谢大家花时间研究这个问题。
在 django 3(不确定 v2)中,如果您使用的是 html 电子邮件模板。以下将用于发送模板变量。以下代码在urls.py
path('password_reset/', auth_views.PasswordResetView.as_view(
extra_email_context={'var': something},
html_email_template_name='registration/password_reset_email.html')),
添加 'extra_email_context' 是发送要转发到模板的参数字典。
我正在尝试将密码重置视图直接从 url 重定向到另一个模板,如下所示:
url(r'^accounts/password/reset/', password_reset, {'template_name':'users/login.html', 'extra_context':{'reset':'1'}, 'post_reset_redirect':'/users/accounts/login'}, name='password_reset'),
我已经传递了我需要在模板中使用的上下文。
在我的 'users/login.html' 模板中,我尝试使用:
console.log('{{reset}}');
但是控制台没有任何显示。
是不是少了什么?或者我以错误的方式访问上下文?
URL 模式:
urlpatterns = [
url(r'^accounts/login/', web_login, name='web_login'),
url(r'^accounts/password/reset/', password_reset, {'template_name':'users/login.html', 'extra_context':{'reset':'1'}, 'post_reset_redirect':'/users/accounts/login'}, name='password_reset'),
url(r'^signup/', web_signup, name='web_signup'),
url(r'^create_role/', create_role, name='create_role'),
url(r'^activate/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$',
views.activate, name='activate'),]
模板:users/login.html
<div class="tab-pane fade" id="pills-thankyou" role="tabpanel" aria-labelledby="pills-thankyou-tab">
<h5 class="mb-3">
Success!
</h5>
<p>
We have sent you an email with reset instructions.
</p>
<p>
If the email does not arrive soon, check your spam folder. It was sent from <strong>support@fieldsight.org</strong>.
</p>
<button type="button" id="btn-backtologin" class="btn btn-secondary"><i class="la la-long-arrow-left"></i> Back to Login</button>
</div>
<div class="tab-pane fade" id="pills-reset" role="tabpanel" aria-labelledby="pills-reset-tab">
<h5 class="mb-3">
Forgot your password?
</h5>
<p>
Don't worry. Resetting your password is easy, just tell us the email address you registered with <strong>Fieldsight</strong>.
</p>
<form method="post" action="/users/accounts/password/reset/">
{% csrf_token %}
<div class="form-group">
<label for="inputResetEmail">Email address</label>
<input type="email" name="email" class="form-control" id="inputResetEmail" required>
</div>
<button type="submit" class="btn btn-secondary" id="btn-resetpassword"><i class="la la-send" ></i> Submit</button>
<button type="button" id="btn-backtologinfromreset" class="btn btn-secondary"><i class="la la-long-arrow-left"></i> Back to Login</button>
</form>
</div>
JavaScript:
if('{{reset}}'=='1'){
$('#pills-reset').removeClass('active show');
$('#pills-thankyou').tab('show');
fn_login_eqheight();
fn_login_vertically_center();
}
console.log('{{reset}}');
我什至尝试使用 {{ form.reset }}
但结果是空的。
在我的 HTML 控制台中:
if(''=='1'){
$('#pills-reset').removeClass('active show');
$('#pills-thankyou').tab('show');
fn_login_eqheight();
fn_login_vertically_center();
}
console.log('');
在寻找一些解决方案后,我想出了 url 中的 'post_reset_redirect':'/users/accounts/login'
重定向到我的 web_login
视图函数的想法。
然后我能够在我的 web_login
视图中捕获从 password_reset
视图传递的 extra_context
使用:
reset = request.GET.get('reset')
然后我在我的模板中传递了这个变量,之后实现了所需的功能。 感谢大家花时间研究这个问题。
在 django 3(不确定 v2)中,如果您使用的是 html 电子邮件模板。以下将用于发送模板变量。以下代码在urls.py
path('password_reset/', auth_views.PasswordResetView.as_view(
extra_email_context={'var': something},
html_email_template_name='registration/password_reset_email.html')),
添加 'extra_email_context' 是发送要转发到模板的参数字典。