2012-03-15 2 views
0

Здравствуйте и спасибо заранее. У меня есть форма django, которая не отображается на шаблоне. Кнопка «отправить» отображает, но формы нет. Я смотрел на этот код около 6 часов, и это, вероятно, что-то очень простое, мне, вероятно, нужны еще несколько глаз.Форма Django не отображает

My Model:

#models.py 

from django.db import models 
from django.forms import ModelForm 

class DraftInput(models.Model): 
    player_id = models.IntegerField(help_text = 'Input Player ID Number', max_length = 5) 

    def __unicode__(self): 
     return self.player_id 

class DraftForm(ModelForm): 
    class Meta: 
     model = DraftInput 

Мои взгляды:

#views.py 

from django.shortcuts import render_to_response 

from simple.models import DraftInput 
from simple.models import DraftForm 

from django.template import RequestContext 

#...  

def draft_view(request): 

    if request.method == 'POST': 
     form = DraftForm(request.POST) 
     if form.is_valid(): 
      form.save() 
    else: 
     form = DraftForm() 

    return render_to_response('simple/draft_input.html', {'form': form}) 

Мой шаблон:

#draft_input.html 

#... 

     <h1>Draft Input</h1> 
     <h2>Draft</h2><br /><br /> 
      <form method="POST" action=""> 
      <table>{{ form }}</table> 
      <input type="submit" value="Draft Player" /> 
     </form><br /><br /> 
#... 

Спасибо за вашу помощь.

+1

Вы смотрели источник, чтобы увидеть, что отображается? –

+0

У меня была эта точная проблема, потому что я забыл приспособить свой 'urls.py', чтобы использовать новое представление. Он также использовал TemplateView, который я добавил там временно. – moooeeeep

ответ

0

Попробуйте {{ form.as_p }} например. Есть и другие ярлыки. Вы также можете вручную создать форму. Изучите Django Docs: https://docs.djangoproject.com/en/dev/topics/forms/?from=olddocs

+0

Я устал от '{{form.as_p}}' никакой радости. Я собираюсь проверить документы, которые вы рекомендуете сейчас. Спасибо! – dpbklyn

+0

После прочтения документации, я НЕ МОГУ ПОЛУЧИТЬ мой код для работы. Есть ли у вас другие предложения? – dpbklyn

+0

Вы можете установить панель инструментов отладки django и проверить, визуализирована ли форма в контексте. – Jingo

0

Попробуйте «form.as_p» или «form.as_table» вместо «form» в вашем html-файле.

EDIT: проверка из документации и использовать один из примеров, как модель: https://docs.djangoproject.com/en/dev/topics/forms/modelforms/

В вашем примере, можно определить параметры формы в модели, которые могут быть неточными. Вы хотите оставить специальные модификации, такие как help_text в классе DraftForm, теперь в модели DraftInput.

Это простая проблема, вы должны просто воспроизвести что-то из документов, а затем работать над тем, что вы хотите.

Надеюсь, это поможет.

+0

попробовал все 3 без везения. Спасибо! – dpbklyn

+0

после того, как вы попробовали свои предложения и прочитали документацию, я НЕ МОГУ ПОЛУЧИТЬ мой код для работы. Есть ли у вас другие предложения? – dpbklyn

+0

@dpbklyn добавил еще несколько данных в мой ответ. Удачи. – zallarak

2

Либо используйте {{ form.as_table }}, либо удалите <table></table> со своей теги формы.

+0

Это не сработало ... Я был так надежен ... Я использовал '{{form.as_table}}' и сохранил '

' теги СПАСИБО !!! – dpbklyn

+0

после того, как вы попробовали свои предложения и прочитали документацию, я НЕ МОГУ ПОЛУЧИТЬ мой код для работы. Есть ли у вас другие предложения? – dpbklyn

1

Я думаю, что это знак того, чтобы перейти к классам дженериков :) Просто попробуйте CreateView класса

В вашем views.py файле:

class CreateDraftInputView(CreateView): 
    model = DraftInput 
    template_name = "test/draftinput_form.html" 
    success_url = "/test/listdraft/" 

Простой создать шаблон:

<form method="POST" action="."> 
    <table> 
    {% csrf_token %} 
    {{ form.as_table }} 
    <input type="submit" /> 
    </table> 
</form> 

И очень простой список записей в вашем urls.py:

, (r"^listdraft/$", ListView.as_view(model = DraftInput, template_name = "draftinput_list.html")) 
+0

Кто-то думает, что общие представления лучше, чем общие классы :) –

6

Чтение ответов нить, кажется, вам все еще не повезло.

Попробуйте выполнить эти команды в интерактивной оболочке django (python manage.py shell). Вполне возможно, что при попытке форматирования формы создается исключение. Когда во время генерации формы в шаблоне генерируется исключение, вы не увидите многого в HTML; но оболочка django обычно представляет преступника.

python manage.py shell 

In [1]: from simple.models import DraftForm 

In [2]: form = DraftForm() 

In [3]: form.as_p() 

Вы можете увидеть здесь HTML-код или получить исключение. Это расскажет вам больше о том, что вам нужно исправить.

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