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
)
Пожалуйста. Закрываю задачу.