嗨,Djangonauts,我正在尝试构建一个问答类应用程序,比如“StackOverflow”或“Quora”,我是Django的新手。所以请原谅任何逻辑或代码上的愚蠢错误。以下是我的错误
之前:
我做了问答程序,效果很好。问题详细信息页面有一个问题和一个回答按钮,允许用户回答问题。当用户单击按钮时,他将转到一个新的“
answer_form.html
“写下答案并点击
Save
他的答案会显示在问题详细页面中。到这里一切都很好
问题是:
现在我不希望用户离开问题详细信息页面发布他的答案,我使用javascript使
answer_form
但现在当用户单击
保存
我出错了
This page isnât working
If the problem continues, contact the site owner.
HTTP ERROR 405
我如何修复这个错误。我相信很多人不希望人们离开细节页面来评论文章或回答问题。以下是我的视图和模板详细信息
视图.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)
下面是我的
表格.py
class AnswerForm(forms.ModelForm):
class Meta:
model = Answer
fields = ('text', 'answer_image', 'answer_image2')
下面是我的
问题\u 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>
下面是我的
网址.py
url(r'^(?P<username>[-\w]+)/(?P<slug>[-\w]+)/add_answer/$', views.AnswerCreate.as_view(), name='add_answer'),
当然下面是
用于questiondetail的view.py
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
url(r'^(?P<username>[-\w]+)/(?P<slug>[-\w]+)/$', views.QuestionDetail.as_view(), name='single'),