2017-09-14 44 views
0

我是Django的新手,希望构建一个带有响应的快速窗体。基本的Django窗体响应

我试图建立一个形式,它会要求用户输入他的名字,当用户点击提交的页面重新载入,只是说“你好。

urls.py

class Question1Form(forms.Form): 
n = forms.CharField(max_length=100, 
        widget=forms.TextInput(
         attrs={'placeholder': 'Number', 'class': 'form-control'})) 

意见的.py

def home(request): 
    if request.method == 'POST': 
    form = Question1Form(request.POST) 
    if form.is_valid(): 
     result = [Question1Form.ans()] 
     return HttpResponse(Question1Form.n) 
    else: 
    form = Question1Form() 
    return render(request, 'index.html', {'form': form}) 

的index.html

<form action="" method="post" class="form"> 
    {% csrf_token %} 
    {{ form.non_field_errors }} 
    <div class="form-row form"> 
    <div class="col-sm-4"> 
     {{ form.n.errors }} 
     {{ form.n }} 
    </div> 
    <input class="btn btn-primary" type="submit" value="Submit" /> 
    </div> 
</form> 

因此,如何在代码为S

回答

0

你应该叫实例字段,而不是类字段,并从验证(清理)数据值(见documentation):

return HttpResponse(form.cleaned_data['n']) 

如果你想与n值重新加载相同的模板:

return render(request, 'index.html', {'form': form, 'n': form.cleaned_data['n']}) 

,并在模板添加:

{% if form.is_valid %} 
    <p> Hello {{ n }} </p> 
{% endif %} 
0
if request.method == 'POST': 
    form = Question1Form(request.POST) 
if form.is_valid(): 
    result = form.save() 
    return render(request, 'index.html', {'created': True}) 

然后在你的HTML可以说

{% if created %} 
    <p> Hello </p> 
{% endif %} 

编辑我看现在你有你的形式采取任何行动。

所以你需要在你的URLS.py中指向那个视图。例如, 。

from myapp import views as app_views 
from django.conf.urls import url 

urlpatterns =[ 
    url(r'^my_form/$', app_views.home, name='save_form'), 
] 

然后将该操作添加到您的表单中。

<form action="{% url 'save_form' %}" method="post" class="form">