Django как в html создать ссылку href не указывая корень сайта а тольк часть после корня

http://127.0.0.1:8000 -- > как возможно/и возможно ли заменить корень сайта явно не указвая на него, а лишь добавить оставшуюся часть kovach/signal

href="http://127.0.0.1:8000/kovach/signal#" -- исходная ссылка

Link


Ответы (1 шт):

Автор решения: em0ji

Не совсем понятен вопрос, но ссылки в href указываются по разному, например {% url 'name' %} или {{ name.get_absolute_url }}.

Допустим есть некая модель Post c описанием постов блога... дальше нам надо вывести все посты на странице по адресу http://localhost:8000/lenta/. Пишем views:

from django.shortcuts import render
from django.views.generic import ListView

# Подключаем в urls.py как 'lenta/'
class LentaView(ListView):
    # Выводит список всех постов на отдельной странице (например, шаблон blog.html)
    def get(self, request):
        posts = Post.objects.all()
        return render(request, 'blog/blog.html', {'posts': posts})

И подключаем нашу вьюшку в urls.py:

from django.urls import path
from . import views

urlpatterns = [
    path('lenta/', views.LentaView.as_view(), name='lenta'),
    path('', views.HomeView.as_view(), name='home'), #подключи сначала главную страницу
]

И только потом выводим наш url в href по "некой оставшейся части":

{% extends 'base.html' %} #Наследуемся от базового шаблона, где base.html - базовый шаблон
{% load static %} # Подключаем статику

{% block content %} # Оборачиваем шаблон в блок
<a href="{% url 'lenta' %}">Лента</a>
{% endblock %}

Но перед тем как так делать, надо сначала вывести базовый шаблон, а потом подключать остальные страницы. Теперь по ссылке http://localhost:8000/lenta/ выводятся все посты блога.

→ Ссылка