Привет, Djangonauts. Я пытаюсь создать приложение типа Вопрос и Ответ, такое как «StackOverflow» или «Quora». Я новичок в Django.поэтому, пожалуйста, прости любые глупые ошибки в логике или коде.Ниже моя ошибка
До: Я сделал приложение вопросов и ответов, и оно работало нормально.На странице «Детали вопроса» есть кнопка «Вопрос» и «Ответ», чтобы пользователь мог ответить на вопрос.Когда пользователь нажимает кнопку, он переходит к новой "answer_form.html
", записывает свой ответ и нажимает Save
. Затем его ответ отображается на странице сведений о вопросе.До этого момента все работало нормально
Проблема: Теперь я не хочу, чтобы пользователь оставлял страницу «Детали вопроса» после ответа, я использовал JavaScript, чтобы answer_form
отображался нана странице деталей вопроса, однако теперь, когда пользователь нажимает Save
, я получаю сообщение об ошибке
This page isn’t working
If the problem continues, contact the site owner.
HTTP ERROR 405
Как я могу исправить эту ошибку.Я уверен, что многие люди не хотят, чтобы люди покидали страницу с подробностями, чтобы комментировать пост или отвечать на вопрос.Ниже приведены мои представления и детали шаблона
views.py
class AnswerCreate(LoginRequiredMixin, CreateView):
model = Answer
form_class = AnswerForm
def form_valid(self, form, *args, **kwargs):
self.object = form.save(commit=False)
self.object.author = self.request.user
slug = self.kwargs.get('slug')
print(slug)
self.object.question = get_object_or_404(Question, slug=slug)
self.object.save()
return super().form_valid(form)
Ниже приведены мои forms.py
class AnswerForm(forms.ModelForm):
class Meta:
model = Answer
fields = ('text', 'answer_image', 'answer_image2')
и ниже мой шаблон question_detail.html
<div class="container-fluid" id="answ" style="display:none">
<div class="form-group row">
{{field.errors}}
<form action="" method="post" enctype="multipart/form-data">
{% csrf_token %}
{% bootstrap_form form2 %}
<input type="submit" value="Save" class="btn btn-primary" />
<button type="button" onclick="document.getElementById('answ').style.display='none'"
class="btn btn-default">Cancel</button> # To hide the form
</form>
</div>
</div>
Это кнопка в шаблоне, которая заставляет форму показывать
<a class="btn btn-primary btn-sm col-sm-2"
onclick="document.getElementById('answ').style.display='block'">Answer</a>
до того, как эта кнопка выгляделавот так и все заработало:
<a href="{% url 'questions:add_answer' username=question.user.username slug=question.slug %}>Answer</a>
Ниже мои Urls.py
url(r'^(?P<username>[-\w]+)/(?P<slug>[-\w]+)/add_answer/$', views.AnswerCreate.as_view(), name='add_answer'),
Конечно ниже view.py для QuestionDetail
class QuestionDetail(SelectRelatedMixin, DetailView):
model = Question
select_related = ('user', 'group')
def get_queryset(self):
queryset = super().get_queryset()
return queryset.filter(user__username__iexact=self.kwargs.get('username'))
def get_context_data(self, **kwargs):
context = super(QuestionDetail, self).get_context_data(**kwargs)
context['form2'] = AnswerForm
return context
ниже - URL для QuestionDetail
url(r'^(?P<username>[-\w]+)/(?P<slug>[-\w]+)/$', views.QuestionDetail.as_view(), name='single'),