@aleksse

Как вывести форму?

Вопрос в том: "Как вывести форму, и получить от туда данные". В программировании не долго, поэтому такой банальный вопрос. Я вывожу комментарии на той же странице, на которой форма.
views.py:
def item(request, alias):
    try:
        item = Book.objects.get(alias=alias)
    except ObjectDoesNotExist:
        raise Http404
    form = Myform()
    comments = Comment.objects.all()
    context = {
        'item' : item,
        'form': form,
        'comments': comments,
    }
    return render(request, 'item.html', context)

def add_comment(request, alias):
    if request.method == 'POST':
        form = Myform(request.POST)
        if form.is_valid():
            comment = form.save(commit=False)
            form.save()
    else:
        form = Myform()
    return HttpResponseRedirect('/books/%s' % alias)

urls.py:
url(r'^book/(?P<alias>[^/]+)', 'books.views.add_comment'),
    url(r'^book/(?P<alias>[^/]+)', 'books.views.item'),

forms.py:
class Myform(ModelForm):
    class Meta:
        model = Comment
        fields = ('text',)

шаблон:
{% for comment in comments %}
            <p>{{ comment }}</p>
        {% endfor %}
  • Вопрос задан
  • 295 просмотров
Решения вопроса 1
tutorial.djangogirls.org/ru/django_forms/index.html

Я тут подсмотрел и все получилось.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
DmitryVoronkov
@DmitryVoronkov
Python Developer
{% if form %}
            <p>{{ form }}</p>
        {% endif %}
Ответ написан
Комментировать
winordie
@winordie
Лучшая документация -- исходники
urls.py
url(r'^book/(?P<alias>[^/]+)/add_comment/$', 'books.views.add_comment',
    name="book_add_comment"),
  url(r'^book/(?P<alias>[^/]+)/$', 'books.views.item'),

шаблон:
{% for comment in comments %}
  <p>{{ comment.text }}</p>
{% endfor %}
<form action="{% url "book_add_comment" alias=item.alias %}" method="post">
  {% csrf_token %}
  {{ form }}
</form>
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы