idlesign/django-sitetree

Django 2.0 и django.urls.path [rus]

dizjis opened this issue · 3 comments

Здравствуйте.
Подскажите, пожалуйста, советом. Имею вышеозначенную версию django и urlpatterns вида:

app_name = 'users'
urlpatterns = [
    path('reset/<uidb64>/<token>/', auth_views.password_reset_confirm,
         name='password-reset-confirm',
         kwargs={
             'template_name': 'users/password-reset-confirm.html',
             'post_reset_redirect': 'users:password-reset-complete'
         }
    ),
]

Ссылка на описание path
Необходимы хлебные крошки. Создал дерево, все прописал в соответствии с документацией. Использую в шаблоне так: {% sitetree_breadcrumbs from "users" %}
Что нужно указать в админке в поле URL, чтоб он "съел" вышеуказанный path?
Если указывать users:password-reset-confirm uidb64 token то django-sitetree реагирует только на ссылку /reset/uidb64/token/, то есть при передаче в ссылке реальных значений uidb64 и token элемент древа не подгружается в шаблон

Здравствуйте,

Очень удобно представить, что вы находитесь не в админке, а в шаблоне (password-reset-confirm.html) и используете шаблонный тег url. Так вот, чтобы тег сработал, необходимо, чтобы в шаблоне были доступны переменные uidb64 и token. Следует проверить, пробрасываются ли данные в шаблон вообще и пробрасываются ли они под именами, которые используете вы. Если не пробрасываются, то можно это сделать самостоятельно (взяв за основу password_reset_confirm), если пробрасываются под другими именами, то достаточно указать для sitetree в URL нужные имена (в urlpatterns и имя менять не обязательно).

Спасибо.
uidb64 и token стандартными средствами в шаблон не попадали. Пришлось сделать обертку над password_reset_confirm таким образом:

def password_reset_confirm(request, uidb64, token, template_name, post_reset_redirect):
    extra_context = {'uidb64': uidb64, 'token': token}
    return auth_views.password_reset_confirm(request, uidb64, token, template_name,
                                             post_reset_redirect=post_reset_redirect,
                                             extra_context=extra_context
                                             )

Пожалуйста. Закрываю задачу.