Так что мне удалось вывести форму в шаблон. Но у меня небольшая проблема с одной из форм, поскольку стиль интерфейса уже сделан. Я просто хотел бы иметь возможность выводить имена меток и т. Д. Внутри HTML-кода, который уже существует. Я могу получить форму выходного сигнала к шаблону, используя следующие:Рендеринг и настройка формы django в шаблоне
<form method="post">
{% csrf_token %}
{{enquiry_form.as_ul}}
<button type="submit" class="submit softcolor">
<span>Submit</span>
</button>
</form>
Однако, у меня есть поле ManytoMany на модели, в которой я хотел бы, чтобы пользователи могли пометить несколько вариантов с флажком. Когда я выхожу выше, я получаю окно выбора, как со списком категорий, которые он проводит.
{% csrf_token %}
{% for fields in enquiry_form %}
<div class="block-365 center clearfix">
<label>{{fields.label}}</label>
<div class="input-line">
<input name="">
</div>
</div>
{% endfor %}
Так что я могу сделать что-то вроде выше, что отлично работает. Но почему-то защита CSRF перестает работать. Я также должен иметь возможность получить доступ к элементам в модели Брошюра (поле ManyToMany).
Вот код, который я до сих пор:
forms.py
from django.forms import ModelForm
from django import forms
from contact_enquiries import models
class ContactEnquiryForm(ModelForm):
class Meta:
model = models.ContactForm
fields=('name','email','company', 'subject', 'message')
class BrochureRequestForm(ModelForm):
class Meta:
model = models.ContactForm
fields = ('name', 'email', 'company', 'address', 'brochure',)
views.py
from contact_enquiries import forms
from django.shortcuts import render
from django.http import HttpResponseRedirect
def contact(request):
if request.method == 'POST':
form = forms.ContactEnquiryForm(request.POST)
en_form = forms.BrochureRequestForm(request.POST)
print(request.POST)
if form.is_valid():
#print "Form looks good!"
#e = models.ContactEnquiry(form.cleaned_data)
#e.save()
form.save()
return HttpResponseRedirect('/thanks/')
else:
form = forms.ContactEnquiryForm()
en_form = forms.BrochureRequestForm()
return render(request, 'contact.html', {
'contact_form' : form,
'enquiry_form' : en_form,
})
models.py
class ContactForm(models.Model):
name = models.CharField(max_length="300")
company = models.CharField(max_length="200")
email = models.CharField(max_length="300")
subject = models.TextField()
message = models.TextField()
address = models.TextField()
brochure = models.ManyToManyField("Brochure", blank=True)
def __unicode__(self):
self.name
class Meta:
verbose_name = "Contact Enquiry"
verbose_name_plural = "Contact Enquiries"
class Brochure(models.Model):
title = models.CharField(max_length="200")
def __unicode__(self):
self.title
class Meta:
verbose_name = "Brochure"
verbose_name_plural = "Brochures"
И HTML является выше. Не уверен, какой лучший подход при выводе формы в шаблон, но мне нужно иметь возможность использовать HTML/CSS, чтобы сохранить время повторного его использования. Также мне нужно иметь возможность установить флажок в форме Брошюры. Поскольку идея заключается в том, когда они заполняют форму, они могут выбрать PDF, который они хотели бы отправить.
Любые вопросы, пожалуйста, задавайте вопросы!