Django: передать extra_context в представление reset_password и получить extra_context в данном шаблоне - PullRequest
0 голосов
/ 18 февраля 2019

Я пытаюсь перенаправить представление сброса пароля на другой шаблон из 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('');

1 Ответ

0 голосов
/ 19 февраля 2019

После поиска некоторых решений мне пришла в голову мысль, что 'post_reset_redirect':'/users/accounts/login' в URL перенаправляет на мою web_login функцию просмотра.

Затем я смог поймать пройденный extra_contextиз представления password_reset в моем представлении web_login с использованием:

reset = request.GET.get('reset')

Затем я передал эту переменную в свой шаблон, после чего была достигнута требуемая функциональность.Спасибо всем, что уделили время на изучение этой проблемы.

...