Форма ответа Django включена в шаблон вопроса - PullRequest
1 голос
/ 06 июля 2010

если у вас есть система вопросов - ответов, где форма ответов включена в шаблон вопросов (так же, как пост-комментарии в Facebook), есть ли другой способ сохранить комментарии для каждого вопроса? как я могу узнать идентификатор вопроса?

мой код:

{%include "replies/replies.html"%} #thats in the template where questions are listed

представление save_question

def save_reply(request, id):
   question = New.objects.get(pk = id)
   if request.method == 'POST':
        form = ReplyForm(request.POST)
        if form.is_valid():
           new_obj = form.save(commit=False)
           new_obj.creator = request.user 
           u = New.objects.get(pk=id)
           new_obj.reply_to = u   
           new_obj.save()
           return HttpResponseRedirect('/accounts/private_profile/')    
   else:
           form = ReplyForm()     
   return render_to_response('replies/replies.html', {
           'form': form,
           'question':question, 
           }, 
          context_instance=RequestContext(request))  

и форма:

<form action="." method="post">
<label for="reply"> Comment </label>
<input type="text" name="post" value="">
<p><input type="submit" value="Comment" /></p>
</form>

как я могу заставить эту форму работать «встроенной» в шаблон вопросов и как я могу «узнать» идентификатор вопроса, на который она ссылается?

Thx

Ответы [ 3 ]

0 голосов
/ 06 июля 2010

Другой способ - через conf или ваш urls.py:

(r'^reply/(?P<id>\d+)/$',save_reply),

и в вашей форме:

<form action="/reply/{{ question.id }}/" method="post">
0 голосов
/ 08 июля 2010

в вашем replies.html имеет:

<form action="." method="post">
    <input type="hidden" value="{{ in_reply_to_id }}" />
    <label for="reply"> Comment </label>
    <input type="text" name="post" value="">
    <input type="submit" value="Comment" />
</form>

, затем в вашем шаблоне вопроса:

<div class="question" id="question-{{ question.id }}">
    {{ question.text }}
    {% with question.id as in_reply_to_id %}
        {%include "replies/replies.html" %}  <--- in_reply_to_id is sent to the include
    {% endwith %}
</div>

, таким образом, ваши основные шаблоны могут вызывать

<p> questions here! <p>
<div class="question-list">
{% for question in question_list %}
    {% include "questions\question.html" %}
{% endfor %}
</div>

Включите немного магии ContentTypes, и ваш класс ответов сможет ответить на любой объект, а не только на вопросы!

0 голосов
/ 06 июля 2010

Я предлагаю вам прочитать о комментариях на http://docs.djangoproject.com/en/1.2/ref/contrib/comments/#ref-contrib-comments-index,, особенно внимательно прочитайте код в django / contrib / comments, тегах 'render_comment_list' и 'render_comment_form', возможно, вы можете использовать структуру комментариев, например ответы, сделав "хак«Прочитайте эту часть: http://docs.djangoproject.com/en/1.2/ref/contrib/comments/custom/.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...