На странице не отображается информация о созданных ссылках в панели администратора. Django
На странице должны отображаться форма обратной связи и ссылки, созданные в админпанели. Созданные модели:
from django.db import models
class ContactModel(models.Model):
# feedback form
name = models.CharField(max_length=50)
email = models.EmailField()
website = models.URLField()
message = models.TextField(max_length=5000)
create_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return f'{self.name} - {self.email}'
class ContactLink(models.Model):
# links
icon = models.FileField(upload_to='icons/')
name = models.CharField(max_length=200)
def __str__(self):
return self.name
Я подключил модели к панели администратора:
from django.contrib import admin
from .models import ContactModel, ContactLink
@admin.register(ContactModel)
class ContactModelAdmin(admin.ModelAdmin):
list_display = ['id', 'name', 'email', 'create_at']
list_display_links = ('name',)
admin.site.register(ContactLink)
Все работает правильно, вы можете создавать ссылки в панели администратора.
Ниже views.py
:
from django.shortcuts import render
from django.views import View
from .models import ContactLink
class ContactView(View):
def get(self, request):
contacts = ContactLink.objects.all()
form = ContactForm()
return render(request, 'contact/contact.html', {'contact': contacts, 'form': form})
urls.py
:
from django.urls import path
from . import views
urlpatterns = [
path('contact/', views.ContactView.as_view(), name='contact'),
path('feedback/', views.CreateContact.as_view(), name='feedback'),
]
Я прохожу цикл for
через код, чтобы вернуть ссылки из панели администратора:
#links
<div class="contact__widget">
<ul>
{% for contact in contacts %}
<li>
<img src="{{ contact.icon.url }}">
<span>{{ contact.name }}</span>
</li>
{% endfor %}
</ul>
</div>
#feedback form
<form action="{% url 'feedback' %}" method="post">
{{ form }}
<button type="submit" class="site-btn">Submit</button>
</form>
Форма обратной связи работает нормально, но ссылки вообще не отображаются на странице... Где может быть ошибка? Скриншот
Представление должно ссылаться на правильное имя переменной. Используйте contact
с s
в:
return render(request, 'contact/contact.html', {'contacts': contacts, 'form': form})