嗨我的主页上有两个表格,一个`联系我们'表单和“下拉”表单以更改网站的语言。由于两个表单都将在基本模板中,因此我必须找到一种方法将表单内容发送到特定视图以处理提交。目前我的网站是单页网站,所以我没有联系表格的问题
联系表格
<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包含表单字段和值,但是当我尝试提交到另一个视图时,在这种情况下通过{{1} } url表单没有发布,我只得到并清空queryDict。我不知道为什么会这样。
答案 0 :(得分:0)
尝试使用url标记(https://docs.djangoproject.com/en/1.8/ref/templates/builtins/#url),您必须在urls.py中定义两个网址,因此在每个操作表单属性中使用标记放置正确的视图名称,例如:
联系表格:
action={% url 'home' %} # url(r'^/$', views.home, name='home')
对于setlang形式:
action={% url 'setlang' %} # url(r'^/setlang$', views.set_lang, name='setlang')
然后在每个功能视图中,您可以通过post方法过滤请求,就像在主视图中一样。
希望它可以提供帮助。