2017-08-24 86 views
0

我有一個不呈現的窗體,我找不出原因。唯一顯示的是提交按鈕。我創建了遵循here,herehere所述方法的表單。Django窗體沒有呈現在HTML中

我看了解問題的解決方案(其中包括下面列出),但他們沒有幫助。

django-forms not rendering errors

django form not rendering in template. Input fields doesn't shows up

Django Form not rendering

Django Form not rendering - following documentation

的HTML是app_core/index.html中,其延伸另一人LANDING_PAGE/base.html文件

的HTML:

{% extends 'landing_page/base.html' %} 
{% load i18n %} 
{% load staticfiles %} 
{% load static %} 
{% load bootstrap %} 

{%block content %} 
<div id="contactus" class="container-fluid"> 

<br> 

<div class="container text-center"> 

    <div class="row"> 
     <div class="col-xs-12 col-sm-10 col-sm-offset-1 col-md-10 col-md-offset-1 col-lg-8 col-lg-offset-2 text-left"> 
      <center><h3>{% trans 'Contact Us' %}</h3> 
      <p>{% trans 'We are at your disposal 365 days 24 hours a day. When you think of languages think of Milingual. 
          Languages are not studied, they are lived!' %}</p></center> 
     </div> 
    </div> 
    <div class ="row"> 
     <div class="col-xs-12 col-sm-10 col-sm-offset-1 col-md-10 col-md-offset-1 col-lg-8 col-lg-offset-2 text-left"> 
     <center><h1>Contact Us</h1><center> 

     <form id="contactus-form" action="{% url 'contact' %}"method="post" enctype="multipart/form-data"> 
      {% csrf_token %} 
      {{ form.as_p }} 

      <br/> 
      <div class="form-actions"> 
       <button type="submit" class="btn btn-primary pull-center">Send</button> 
      </div> 
     </form> 
     <div> 

    </div> 

</div> 


{%endblock content %} 

的Views.py

from django.core.mail import BadHeaderError 
from django.http import HttpResponse, HttpResponseRedirect 
from django.shortcuts import render, redirect 
from .forms import ContactForm 
#ContactUs 
def contact(request): 
    if request.method == 'GET': 
    form = ContactForm() 
else: 
    form = ContactForm(request.POST) 
    if form.is_valid(): 
     whoareyou = form.cleaned_data['whoareyou'] 
     name = form.cleaned_data['name'] 
     phone_number = form.cleaned_data['phone_number'] 
     subject = form.cleaned_data['subject'] 
     from_email = form.cleaned_data['from_email'] 
     message = form.cleaned_data['message'] 
     try: 
      send_email(subject, message, whoareyou, from_email, ['[email protected]']) 
     except BadHeaderError: 
      return HttpResponse('Invalid header found.') 
     return redirect('success') 
return render(request, "/index.html", {'form': form}) 


def success(request): 
    return HttpResponse('Success! Thank you for your message.') 

的form.py

from django import forms 


class ContactForm(forms.Form): 
    WHOAREYOU_CHOICES = (
     ('Teacher', 'Teacher'), 
     ('Student', 'Student'), 
     ('Venue', 'Venue'), 
     ('Business', 'Business'), 
     ('Other', 'Other') 
    ) 
    whoareyou = forms.ChoiceField(choices=WHOAREYOU_CHOICES, required=True) 
    name = forms.CharField(required=True) 
    phone_number = forms.CharField(required=True) 
    from_email = forms.EmailField(required=True) 
    subject = forms.CharField(required=True) 
    message = forms.CharField(widget=forms.Textarea, required=True) 

而urls.py

from django.conf.urls import url, include 
from .views import * 
from app_core import views 

urlpatterns = [ 
    url(r'^$', IndexPage, name='index'), 
    # setting session city 
    url(r'^get-city-session$', GetCitySession, name='get-city-session'), 
    url(r'^set-city-session$', SetCitySession, name='set-city-session'), 
    url(r'^contact/$', views.contact, name='contact'), 
    url(r'^success/$', views.success, name='success'), 
] 

回答

2

您需要將代碼放入塊中,否則在擴展時它不知道放置在哪裏。在你的base.html文件,你可以這樣做

{% block body %} 
{% endblock %} 

然後在您的index.html頁,你需要圍繞要出現在你的基地,這個位置的一切。

{% block body %} 
    ... Code goes here ... 
{% endblock %} 
+0

它已經在一個塊中。我忽略了在這裏添加它。剩下的html完美呈現。只是不是的形式 – fmakawa