我有一个用户反馈的表单视图:
url.py:
url(
r'^feedback/$',
'tool.views.Feedback',
name='feedback'
),
url(
r'^thanks/$',
direct_to_template, {
'template': 'tool_feedback_thanks.html'
},
name='feedback_thanks'
),
forms.py:
class FeedbackForm(forms.Form):
yes_no = forms.ChoiceField(
choices=YES_NO_CHOICE,
initial=1,
widget=forms.RadioSelect(attrs={'class': 'can_reveal_input'}),
label="Are you happy with Our service?"
)
comments = forms.CharField(
widget=forms.Textarea(attrs={
'class': 'hidden', 'placeholder': 'Leave us your comments...'
}),
required=False,
label=""
)
views.py:
def Feedback(request,
template_name='tool_feedback.html'):
title = u'Leave us some feedback'
form = FeedbackForm(request.POST or None)
if form.is_valid():
yes_no = form.cleaned_data['yes_no']
comments = form.cleaned_data['comments']
sender = "A Unirac website user"
recipients = ['[email protected]']
send_mail(yes_no, comments, sender, recipients)
return HttpResponseRedirect(
reverse('feedback_thanks')
)
return render_to_response(template_name, {
'title': title,
'form': form,
}, RequestContext(request))
这是一种享受,但现在客户要求将此表单包含在每一页上。我猜表单可以通过JS提交到适当的URL,但是在每个页面上包含未绑定表单的最佳方法是什么?
3条答案
按热度按时间aoyhnmkz1#
我会创建一个上下文处理器,将表单包含在每个视图中。
编辑:
要让用户访问他/她浏览的前一个URL,您可以只使用URL。
这就是urls.py的样子:
以及窗体的视图:
你应该构造你的模板以获得正确的布局。例如,有一个基本模板:
要创建一个简单的视图,只需使用正确的模板。
最后,将其包含在您的设置中:
7cwmlq892#
我相信包含form的最简单方法是使用assignment_tag:
在模板库中:
以模板
jgwigjjp3#
加上@bmihelac,谁的回答对我来说真的很好。由于django 2.0
assignment_tag
被弃用,转而支持simple_tag
。所以你可以完全按照他的答案,用simple_tag
替换assignment_tag
,像这样:然后只需参考https://docs.djangoproject.com/en/2.1/howto/custom-template-tags/#code-layout了解如何将其导入到模板中!