Hej, mam pytanie dotyczące formularza w django.
Mam formularz kontaktowy, który wysyła wiadomość email. Działa to świetnie.
Jednak podczas rozwoju aplikacji postanowiłem, ze na tej samej stronie (tej z formularzem) chcę wyświetlać pewne dane z bazy danych (ale z innego modelu niż ten do którego zapisuję dane kontaktowe)
A więc:
views.py:
class MyViewClass(FormView):
form_class = ContactUsForm
def form_valid(self, form):
messages.success(
self.request,
'Thank you very much for your message.'
)
from_email = form.cleaned_data['email']
subject = form.cleaned_data['subject']
message = form.cleaned_data['message']
contact_message = Contact(
email=from_email,
subject=subject,
message=message,
)
contact_message.save()
try:
send_mail(subject, message, from_email, ['[email protected]'], fail_silently=False)
except BadHeaderError:
return HttpResponse('Invalid header found.')
return HttpResponseRedirect('/')
Powyższy view rejestruję oczywiście w urls.py jako widok:
urlpatterns = [
path('', views.MyViewClass.as_view(), name='widok'),
]
template (fragment):
<h2>Skorzystaj z formularza kontaktowego</h2>
<form method="POST" class="post-form">{% csrf_token %}
{{ form|crispy }}
<button type="submit">Wyślij</button>
</form>
W pewnych fragmentach template chcę wyświetlić dane z bazy, w sensie z dowolnego modelu poza tym do którego dane pobieram w formularzu.
(w formularzu pobieram dane do modelu o nazwie Contact a chciałbym np wyświetlić dane z modelu X)
I tu pojawia się problem.
Jak z FormView przekazać dane do template?
Podejrzewam, że jest na to prosty sposób, a problem wynika z mojej niewiedzy :) Jestem samoukiem - wybaczcie :)
Pozdrawiam!