Я хочу отобразить некоторые записи запроса базы данных в моей базе. html - PullRequest
0 голосов
/ 15 апреля 2020

У меня есть страница с несколькими веб-сайтами с базой. html, которая содержит похожую информацию на разных страницах, например, lo go, название компании и т. Д. c.

Я создал две модели

class CompanyProfile(models.Model):
    company_name = models.CharField(max_length=100)
    company_logo = models.ImageField(upload_to='company_profile')
    company_address1 = models.CharField(max_length=50)
    company_address2 = models.CharField(max_length=50)
    company_address3 = models.CharField(max_length=50)
    company_phone1 = PhoneField()
    company_phone2 = PhoneField()
    company_email = models.EmailField()
    company_linkedin = models.URLField()
    company_facebook = models.URLField()
    company_twitter = models.URLField()

    def __str__(self):
        return self.company_name


class CompanyServices(models.Model):
    service_name = models.CharField(max_length=50)
    service_logo = models.ImageField(upload_to='company_services')
    service_description = models.TextField()

    def __str__(self):
        return self.service_name

и два представления

def base_view(request):
    company_profile = get_object_or_404(CompanyProfile)

    context = {
        'profile': company_profile,
    }
    return render(request, 'webpages/base.html', context=context)


def index_view(request):
    company_services = CompanyServices.objects.all()

    context = {
        'services': company_services,
    }

    return render(request, 'webpages/index.html', context=context)

в моем URL.py, я вообще не загружаю базу, так как она была расширена в моем индексе. html.

app_name = 'webpages'

urlpatterns = [
    path('', views.index_view, name='home')
]

когда я пытаюсь загрузить индекс с тегами шаблона из базы. html, вот так

<div class="container d-flex">
      <div class="contact-info mr-auto">
        <i class="icofont-envelope"></i><a href="mailto:contact@example.com">***{{profile.company_email}}***</a>
        <i class="icofont-phone"></i> ***{{profile.company_name}}***
      </div>

Не загружается из базы данных. как я могу это сделать или это невозможно?

- это база. html должна содержать только информацию о состоянии c?

1 Ответ

0 голосов
/ 15 апреля 2020

Вам не нужен отдельный базовый вид для базового шаблона. Он не вызывается, поэтому вы не видите его в консоли при нажатии на index_view.

. Вам нужно будет сделать что-то вроде:


def index_view(request):
    company_profile = get_object_or_404(CompanyProfile) # this will error I think
    company_services = CompanyServices.objects.all()

    context = {
        'services': company_services,
        'company_profile': company_profile,
    }

    return render(request, 'webpages/index.html', context=context)

base. html

<div class="container d-flex">
    <div class="contact-info mr-auto">
        <i class="icofont-envelope"></i><a href="mailto:contact@example.com">***{{ company_profile.company_email }}***</a>
        <i class="icofont-phone"></i> ***{{ company_profile.company_name }}***
</div>

index. html

{% extends "base.html" %}

<div>
REST OF THE PAGE CONTENT HERE
</div>

ПРИМЕЧАНИЕ : простой вызов get_object_or_404() вызовет ошибку, потому что вы не давая ему параметр для поиска, поэтому вам нужно будет передать ему что-то вроде pk или id для выполнения поиска. Что-то вроде get_object_or_404(CompanyProfile, pk=<some_pk_value>)

Кроме того, если base.html используется по всему сайту, вам нужно иметь company_profile в контексте для каждого представления, расширяющего этот шаблон. Проверьте процессоры контекста как хороший способ добавить это в данные контекста для каждого представления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...