Не выводятся данные на страницу в Django
Я создаю сайт сокращения ссылок.
И когда надо чтоб все сокращённые ссылки выводились снизу под формой, оно не отображается.
Я читал информацию, но не помогло.
#views.py
def links(request):
form = LinkForm(request.POST or None)
if request.method == "POST":
BASE_URL = request.get_raw_uri()
if form.is_valid():
link_urls = Links()
form.save()
link_urls.short_url = request.POST.get("short_url")
form.save()
link_urls.save()
return redirect('link-creation')
return render(request, 'sokratim/links.html', {"form": form, "context_object_name": "urls"})
def redirector(request, key):
instance = get_object_or_404(Links, key=key)
return redirect(instance.original_url)
#models.py
from django.db import models
class Links(models.Model):
long_url = models.URLField('Длинная ссылка', max_length=255)
short_url = models.CharField('Сокращённая ссылка', max_length=15, unique=True)
def __str__(self):
return f'{self.long_url} - {self.short_url}'
class Meta:
verbose_name = "Link"
verbose_name_plural = "Links"
#links.html
{% extends 'sokratim/base.html' %}
{% block title %}
{{ title }}
{% endblock %}
{% block content %}
<form method="post" class="form-links">
<h2 class="link-short">Сокращение ссылок</h2>
{% csrf_token %}
{{ form.as_p }}
<button type="submit" class="btn" style="margin: 0">Сократить</button>
</form>
<div class="links">
{% for urlg in urls %}
<div class="media-body">
<h5>Cсылка <a target="_blank" href="{{ urlg.long_url }}">link/{{ urlg.short_url }}/</a></h5>
</div>
{% endfor %}
</div>
{% endblock content %}
Вот сама форма
Ответы (1 шт):
Автор решения: Sherlock
→ Ссылка
from .models import Links
def links(request):
urls = Links.objects.all()
form = LinkForm(request.POST or None)
if request.method == "POST":
BASE_URL = request.get_raw_uri()
if form.is_valid():
link_urls = Links()
form.save()
link_urls.short_url = request.POST.get("short_url")
form.save()
link_urls.save()
return redirect('link-creation')
return render(request, 'sokratim/links.html', {"form": form, "urls": urls})
В словаре context(это словарь который вы передаете в render) вы должны передавать все ссылки.
1-м вы передаете название переменной, которая будет рендерится в html шаблоне.
2-м вы передаете переменную с содержимым, которое вы хотите отправить в html шаблон.
