【发布时间】:2014-03-18 11:10:08
【问题描述】:
我正在尝试显示一个表单并在我的基于类的视图中提交。
我没有使用 Django 的表单,因为它破坏了我的设计。
我的表单代码:
<form action="." method="POST" >
<input type='hidden' name='pf_id' value='{{pf.id}}' />
<input type='hidden' name='content_type' value='portfolio' />
<textarea id="id_comment" name="comment"></textarea>
<section><input type="submit" value="submit" name="commentSubmit" class="comment-button" title="submit" class="comment-button" /></section>
</form>
在views.py:
class ProjectDetailView(FormMixin, DetailView):
template_name = 'account/inner-profile-page.html'
model = ProjectDetail
context_object_name = 'project'
def get_object(self, queryset=None):
return get_object_or_404(ProjectDetail, title_slug = self.kwargs['title_slug'])
def get_context_data(self, **kwargs):
context = super(ProjectDetailView, self).get_context_data(**kwargs)
projects = []
for st in SubType.objects.all():
user = self.get_object().user
pd = ProjectDetail.objects.filter(user=user,project_sub_type__sub_type=st)
if pd.count() > 0:
projects.append((st.name, pd.count()))
context['projects'] = projects
return context
def post(self, request, *args, **kwargs):
import pdb;pdb.set_trace()
我希望在提交表单时调用 post 方法(希望我的假设是正确的),但事实并非如此,因为提交此表单会将我带到一个空白页面。 URL 没有改变,我在 runserver shell 中收到 405 错误消息。为什么会这样? 我的网址是这样的:
url(r'^project-detail/(?P<title_slug>\w+)/$',ProjectDetailView.as_view(), name="project-detail-view"),
url(r'^project-page/(?P<user_slug>.+)/$',projectPage.as_view(),name='projectPage'),
【问题讨论】:
-
您需要回复
def post。 -
@PriyankPatel:然而
post根本没有被称为。 -
表单 URL 是否与
ProjectDetailViewURL 相同?例如是project-detail/some_title/吗? -
动作似乎不对。不应该只是
""发布到当前页面吗?