J'essaye de créer un formulaire avec Django 1.10 pour créer un commentaire sur un objet Tâche. Quand je veux ouvrir le formulaire, il n'y a pas de champ et lorsque je tente de présenter, j'eu cette erreur:Les formulaires Django ne seront pas rendus (pas de correspondance inverse)
NoReverseMatch à/tâches/29/commentaire/ inverse pour « create_comment » avec des arguments « ('',)' pas trouvé. 1 motif (s) a essayé: [u'tasks// commentaires/$ '(P [0-9] +?)]
Comment puis-je rendre ma forme sur mon modèle, et revenir à mon « détail "voir après soumettre?
forms.py
class CreateCommentForm(forms.Form):
commentary = forms.CharField(label='Commentary', widget=forms.Textarea, required=True)
models.py
class Comment(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
task = models.ForeignKey(Task, on_delete=models.CASCADE)
commentary = models.TextField(blank=True, max_length=5000)
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.commentary
views.py
class CommentCreateView(SuperuserRequiredMixin, FormView):
template_name = 'tasks/create_comment_modal.html'
form_class = CreateCommentForm
def form_valid(self, form):
user = self.request.user
task = Task.objects.get(id=self.kwargs['pk'])
commentary = form.cleaned_data['commentary']
comment = Comment(user=user, task=task, commentary=commentary)
comment.save()
return HttpResponseRedirect(reverse('tasks:detail', kwargs={'pk': task.id}))
urls.py
url(r'^(?P<pk>[0-9]+)/$', views.DetailView.as_view(), name='detail'),
url(r'^(?P<pk>[0-9]+)/comment/$', views.CommentCreateView.as_view(), name='create_comment'),
create_comment_modal.html
{% load widget_tweaks %}
<form role="form" id="comment-create-form" name="comment-create-form" method="post" action="{% url 'tasks:create_comment' task.id %}">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h4 class="modal-title">Add comment in task #{{ task.id }} - {{ task.title }}</h4>
</div>
<div class="modal-body">
{% csrf_token %}
<div class="row">
<div class="col-lg-12">
<div class="form-group">
<label class="control-label" for="{{ form.commentary.id_for_label }}">Commentary</label>
{% render_field form.commentary class+="form-control" %}
</div>
</div>
</div>
<div class="row">
<div class="col-lg-12">
<div id="current_user">
Comment by : {{ user.first_name }} {{ user.last_name }}
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
<button type="submit" class="btn btn-primary" value="deploy">Submit</button>
</div>
</form>
essayer avec: def get_success_url (auto): inverse de retour ('tâches: détail', kwargs = { 'pk': self.task.id}) dans CommentCreateView –