【发布时间】:2015-08-29 02:04:54
【问题描述】:
您好,我的主页上有两个表单,一个“联系我们”表单和一个“用于更改网站语言的下拉表单”。由于这两个表单都将在基本模板中,我想我必须找到一种方法将表单的内容发送到特定视图以处理提交。目前我的网站是一个单页网站,所以我的联系表格没有问题
联系表格是
<form method="post" action="" role="form" id="footer-form">
{% csrf_token %}
<div class="form-group has-feedback">
<label class="sr-only" for="{{ form.name.label }}">{{ form.name.label }}</label>
{{ form.name }}
<p class="help-block danger">{{ form.name.errors }}</p>
<i class="fa fa-user form-control-feedback"></i>
</div>
<div class="form-group has-feedback">
<label class="sr-only" for="{{ form.email.label }}">{{ form.email.label }}</label>
{{ form.email }}
<p class="help-block danger">{{ form.email.errors }}</p>
<i class="fa fa-envelope form-control-feedback"></i>
</div>
<div class="form-group has-feedback">
<label class="sr-only" for="{{ form.message.label }}">{{ form.message.label }}</label>
{{ form.message }}
<p class="help-block danger">{{ form.message.errors }}</p>
<i class="fa fa-pencil form-control-feedback"></i>
</div>
<input type="submit" value="Send" class="btn btn-default">
</form>
而语言形式是
<form action="/setlang" method="post">
{% csrf_token %}
<input name="next" type="hidden" value="/"/>
<select name="language">
{% get_current_language as LANGUAGE_CODE %}
{% get_available_languages as LANGUAGES %}
{% get_language_info_list for LANGUAGES as languages %}
{% for language in languages %}
<option value="{{ language.code }}"
{% if language.code == LANGUAGE_CODE %}
selected="selected"{% endif %}>
{{ language.name_local }} ({{ language.code }})
</option>
{% endfor %}
</select>
<input type="submit" value="Go"/>
</form>
呈现页面的视图
@csrf_exempt
def home(request):
# send_email(['elraphah@gmail.com'],'YonniQ','info@verdin.no',"Testing","Thanks for the Test" )
form = ContactForm()
if request.method=='POST':
form = ContactForm(request.POST)
print 'Form Validation '
print form.is_valid()
if form.is_valid():
send_email(['info@verdin.no'], request.POST['name'], request.POST['email'], request.POST['message'])
return render_to_response('home.html',locals())
由于我在使用 django 的 i18n 的 set_language 视图时遇到了一些问题,因此我决定在我的表单操作中创建自己的 setlang。
当我像在联系表单中一样将操作属性设为空并提交时,表单提交到我的主视图并且 queryDict 包含表单字段和值但是当我尝试提交到另一个视图时,在这种情况下是通过/setlang url表格没有发布,我只得到并清空queryDict。我不知道为什么会这样。
【问题讨论】:
标签: django forms post get action