我有一个由TemplateView生成并包含POST表单的页面。 如何将此表单与TemplateView一起使用。
有一个类似我的代码的例子:
class ProjetMixin(object) :
...
def get_context_data(self, **kwargs) :
...
return context
class AView(ProjetMixin, TemplateView):
template_name = 'path-to-the-page.html'
offre = None
def get_context_data(self, **kwargs) :
context = super(AView, self).get_context_data(**kwargs)
try :
self.offre = self.projet.offredeprojet
except OffreDeProjet.DoesNotExist :
self.offre = None
if self.request.user.is_authenticated() :
print(" method = ",self.request.method) //display "GET"
if self.request.method == "POST" :
print("post")
context['offre'] = self.offre
return context
所以唯一的方法是GET,但我怎样才能使用POST?
提交表单时出现此错误:
Method Not Allowed (POST): /projets/pseudoaz/recrutement
[2017/07/01 11:50:57] HTTP POST /projets/pseudoaz/recrutement 405 [0.06, 127.0.0.1:57560]
谢谢
答案 0 :(得分:5)
对于generic.TemplateView
,您只实施了get
方法。您应该实施post
方法以允许发布表单或尝试使用generic.FormView
文档中的更多详细信息:https://docs.djangoproject.com/en/1.11/topics/class-based-views/generic-editing/
答案 1 :(得分:0)
Django 早已更新以支持其视图的扩展。 以下代码说明了如何通过 post 方法使用 django 的通用 Templateview。或者,根据逻辑的复杂程度,可以使用 View、Formview 或基于函数的视图,这只是表达具有后期实现的 TemplateView。
WHERE
1 = 1
(CASE WHEN @Datecategory = 'Beginn' THEN [Beginn] ELSE '' END) BETWEEN (@start) AND (@end)