2017-09-14 27 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">