2015-01-04 2 views
1

Я новичок в Django, и я пытаюсь создать форму в шаблоне. Я думаю, что я это сделал, но у меня отсутствует кусок. Это то, что я в настоящее время вижу:Отображение содержимого формы вместо имени объекта формы

enter image description here

Я думаю, что я что-то из моего класса формы, который должен отображать выбор отсутствует.

forms.py

from django import forms 

class TestForm(forms.Form): 
    one = forms.ChoiceField(choices=('HDFS', 'HDFS'), widget=forms.RadioSelect()) 
    two = forms.ChoiceField(choices=('HIVE', 'HIVE'), widget=forms.RadioSelect()) 
    three = forms.ChoiceField(choices=('BOTH', 'Both of HDFS and HIVE'), widget=forms.RadioSelect()) 
    beatle = [one, two, three] 
    event_textarea = forms.Textarea(attrs={'rows': '8', 'class': 'form-control', 'placeholder': 'Events...', 'id': 'event_textarea'}) 

views.py

def home(request): 
    if request == 'POST': 
     # create a form instane and populate it with data from the request 
     form = TestForm(request.POST) 
     if form.is_valid(): 
      # process the data in form.cleaned_data as required 
      form.cleaned_data() 
      # redirect to a new URL: 
      return HttpResponseRedirect('/test/') 
    # if a GET (or any other method) we'll create a blank form 
    else: 
     form = TestForm() 
    return render(request, 'home/home_page.html', {'form': form}) 

шаблона:

{% extends 'index/index.html' %} 

{% load staticfiles %} 
{% block head %} 
    <script type="text/javascript" src="{{ STATIC_URL }}home/js/home.js" async></script> 
    <link href="{{ STATIC_URL }}home/css/home.css" rel="stylesheet"> 
{% endblock head %} 

{% block content %} 

    <div>Welcome to Trinity E2E testing</div> 

    <form id="test-form" action="/test/" method="post"> {# pass data to /test/ URL #} 
    {% csrf_token %} 
    {% for radio in form.beatle %} 
    <div class="btn btn-default btn-lg"> 
     {{ radio }} 
    </div> 
    {% endfor %} 
    {{ form.event_textarea }} 

    <input id="submit-test" type="submit" class="btn btn-default btn-lg" value="Submit"> 
    </form> 

{% endblock content %} 

ответ

2

beatle список содержит ссылки на класс атрибутов, а не атрибуты экземпляра.

Как насчет сделать это метод экземпляра для возврата экземпляра атрибутов (полей формы):

def beatle(self): 
    return [self.one, self.two, self.three] 

UPDATE

Чтобы правильно вернуть связанные поля:

def beatle(self): 
    return [self['one'], self['two'], self['three']] 

или

def beatle(self): 
    return [self[name] for name in ['one', 'two', 'three']] 
+0

спасибо за помощь, позвольте мне сделать снимок! – Liondancer

+0

Я пробовал это, но у меня есть проблема, зная, какие места менять код. Это ошибка, которую я получаю http://postimg.org/image/p57xncwez/ и изменения, которые я сделал: http://dpaste.com/2FZ2BFC – Liondancer

+0

@Liondancer, вы сделали это правильно. Не могли бы вы показать полную трассировку? – falsetru

Смежные вопросы