Перенаправление на страницу с нескольких
Имеется такой код:
#urls.py
path('', MainFormView.as_view(), name='home'),
path('index', MainFormView.as_view(), name='home'),
path('home', MainFormView.as_view(), name='home'),
...
#base.html
{% if request.path == '/home' %}
{{ блок }}
{% endif %}
У одной страницы несколько адресов. На этой странице должен выводиться блок, но условие стоит на один путь. Как сделать лаконично на все без перечисления в условии? Или как сделать редиректы с первого и второго путей на третий?
UDP: код view:
@method_decorator(login_required, name='dispatch')
class MainFormView(DataMixin, FormView):
form_class = MainForm
template_name = 'sitee/index.html'
success_url = reverse_lazy('home')
def get_context_data(self, *, object_list=None, **kwargs):
context = super().get_context_data(**kwargs)
context['menu_selected'] = 'home'
c_def = self.get_user_context(title="Главная")
return dict(list(context.items()) + list(c_def.items()))
def form_valid(self, form):
print(form.cleaned_data)
return redirect('home')
на эту страницу ведет три пути:
127.0.0.1
127.0.0.1/index
127.0.0.1/home
Как сделать, что бы при попытке перейти на 127.0.0.1 и 127.0.0.1/index нас переводило на 127.0.0.1/home? Это нужно для того, что бы в шаблоне было такое условие if request.path == '/home' , а не такое if request.path == '/home' or request.path == '/index' or request.path == '/'
Либо же можно оставить без редиректа, а использовать в условии нечто такое: if request.name == 'home', т.е. если указано имя страницы, не важно какой у нее путь, условие выполнялось
Ответы (1 шт):
#urls.py
path('', MainFormView.as_view(), name='main'),
path('index', MainFormView.as_view(), name='index'),
path('home', MainFormView.as_view(), name='home'),
#base.html
{% if 'home' in request.path %}
<h1>Home</h1>
{% elif 'index' in request.path %}
<h1>Index</h1>
{% else %}
<h1>Main</h1>
{% endif %}
чтобы получить 'name' в urls.py вы можете использовать {{ request.resolver_match.view_name }}.поэтому можно вот так сделать.
{% if 'home' in request.resolver_match.view_name %}
<h1>Home</h1>
{% elif 'index' in request.resolver_match.view_name %}
<h1>Index</h1>
{% else %}
<h1>Main</h1>
{% endif %}