2016-03-11 4 views
0

django newb. Я просто пытаюсь включить мой класс в шаблон. Представление класса, которое у меня есть, - это CreateView, поэтому я хочу создать форму, которую я могу отправить. Я вижу всякую информацию в Интернете для создания списков объектов и т. Д., Но ничего для формы. Я думаю, что это не должно быть так сложно. У меня есть следующие:положить класс в шаблон django

models.py

class Comments(models.Model): 
    comment_text = models.CharField(max_length=600, default="None") 

views.py

class CommentCreate(CreateView): 
    model = Comments 
    fields = ['comment_text'] 
    template_name = 'commentcreate.html' 
    context_object_name = 'comment_create' 

мой шаблон

<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Title</title> 
</head> 
<body> 
<form action="" method="post">{% csrf_token %} 
    {{ comment_create }} 
    <input type="submit" value="Create" /> 
</form> 
</body> 
</html> 

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

+2

использование '{{}} форма' вместо '{{comment_create}}' или '{{form.comment_text}}' –

+0

нормально, но как он знает, к какой форме он указывает. Если у меня есть несколько классов CreateView, если я просто скажу {form}, я не вижу, где, если указывает на это конкретное представление CommentCreate. Я попытался включить это в другой шаблон, и форма не отображается, я предполагаю, потому что нет ссылки, чтобы сказать, какой вид показать. – ratrace123

ответ

0

Просто используйте {{ form }} для доступа ко всем полям, определенным внутри вашего класса view.

Чтобы получить доступ к определенному полю из формы, используйте оператор точки, т.е. {{ form.db_field_name }}

Для еи

{{ form.comment_text }} 

Это создало бы label, input тегов для поля comment_text.

Вы можете также render форма в виде таблицы или абзаца и т.д.

+0

ОК, но как он узнает, в какой форме он указывает. Если у меня есть несколько классов CreateView, если я просто скажу {form}, я не вижу, где, если указывает на этот конкретный вид CommentCreate – ratrace123

+0

, он связан хотя с URL-адресами. т. е. для ex 'url (^ post/create, views.CreateView.as_View(), name =" create ")' будет вызывать соответствующее представление, которое дополнительно вызывает заданный шаблон. Выключение полей db в шаблонах осуществляется через '{{form}}', так как ваш класс вида унаследовал класс CreateView. –

+0

ОК, я понимаю это, и я смог сделать это только с одним шаблоном. Но что, если у меня уже есть шаблон и URL-адрес, который является 'url (^ post/create, views.CreateView.as_View(), name =" create ")', и я хочу добавить еще один CreateView к этому же шаблону? Как у меня их обоих? – ratrace123