J'utilise Django 1.8 pour créer une application. J'ai un modèle de lien et un modèle de commentaire qui a le lien comme ForeignKey. J'utilise des vues génériques pour générer un LinkDetailView et un CommentaireCreateView et les afficher dans des fichiers modèles séparés, puis inclure un commentaire dans le modèle de détail de lien. Voici le code:Comment passer une vue de formulaire à une autre vue en tant que contexte dans django?
views.py
class LinkDetailView(DetailView):
models = Link
queryset = Link.objects.all()
def get_context_data(self, **kwargs):
context = super(LinkDetailView, self).get_context_data(**kwargs)
context['form'] = CommentForm
return context
class CommentCreateView(CreateView):
form_class = CommentForm
template_name = "comments/comment_form.html"
def form_valid(self, form):
link = get_object_or_404(Link, pk=form.data["link"])
f = form.save(commit=False)
f.user = self.request.user
f.link = link
f.save()
return super(CommentCreateView, self).form_valid(form)
link_detail.html
{% block content %}
. . .
{% include "comments/comment_form.html" %}
{% endblock %}
comment_form.html
<h2>Add Comment</h2>
<form action="" method="POST">
{% csrf_token %}
<table>
{{ form.as_p }}
</table>
<input type="submit" name="submit" value="Submit" />
</form>
Le formulaire apparaît dans la page de détail du lien, mais lorsque je clique sur le bouton Soumettre, il ne va nulle part [je vois l'erreur "POST /links/1/slug/ HTTP/1.1" 405 0
dans le shell] et ne sauvegarde évidemment pas dans la base de données. Je ne suis pas sûr si j'ai choisi l'approche correcte pour le faire, donc toute aide serait appréciée.