【发布时间】:2018-10-11 11:02:07
【问题描述】:
所以我正在使用 django,我有一个简单的表单,其中包含一个名为“sujet”的文本字段,这是 form.py 代码:
from django import forms
class ContactForm(forms.Form):
sujet = forms.CharField(max_length=100,
widget=forms.TextInput(
attrs={
'id': 'id_sujet',
'style': 'border-color: blue;',
'placeholder': 'Write your name here'
}
)
)
用户可以填写表单的模板“contact.html”如下:
<form id="myForm" action="{% url 'contact' %}" method="post">
{{ form.sujet }}
<input type="submit" value="Submit" />
</form>
<div id="response">
Sujet : <span id="sujeet"></span>
{{ sujet }}
</div>
在我的“views.py”中,我希望我的联系人函数将变量“sujet”渲染到模板中,以便在填写并提交表单后将其显示在“contact.html”上(稍后会详细说明显示与 sujet 相关的数据库查询的结果,而不是变量本身,但我仍在努力),这是视图函数的代码:
def contact(request):
form = ContactForm(request.POST or None)
if form.is_valid():
sujet = form.cleaned_data['sujet']
envoi = True
return redirect(request.META['HTTP_REFERER'], {'sujet':sujet})
else:
return render(request, 'voirkpi/contact.html', locals())
这是我的“urls.py”的代码:
from django.urls import path
from django.conf.urls import url
from . import views
urlpatterns = [
path('accueil', views.ligneerabstat),
path('spark', views.kpitest),
path('testchart', views.testchart),
path('contact', views.contact, name='contact'),
#path('test', views.test, name='test'),
url('test', views.test, name='test')
]
我的问题是,单击提交后 sujet 是空的并且没有显示任何内容,我确实使用简单的 javascript 完成了这项工作,但这不是我想要的,因为我稍后说它的预期用途是查询数据库并根据填写的“sujet”在该范围内返回查询结果。 任何帮助将不胜感激,谢谢。
【问题讨论】:
-
在有效的情况下,您正在执行
redirect...您的意思是改为执行render吗?第二个参数也是permanent,但看起来你正在传递上下文 -
如果它有效,我想做的是将“sujet”发送到同一个模板,这就是为什么我将它重定向到提交表单的同一个模板,如果有另一种方式要做到这一点,请向我推荐。
标签: django forms django-views