【发布时间】:2018-04-27 05:48:12
【问题描述】:
在 ListView 中,我可以轻松地使用 def post(self, request) 方法从列表视图发出帖子请求。但我想从 def get_queryset(self) 发出我还无法做到的发布请求。当我尝试这样做时,它显示“method 405 not allowed!”,即使通过 http_method_names 允许发布方法。
如何在 get_queryset 函数中访问 POST 请求?
class ZonListView(SearchMixin, SingleTableMixin, ListView):
template_name = 'cadmin/list.html'
model = Zon
table_class = ZonTable
search_fields = {
'title': 'icontains',
'description': 'icontains',
}
def post(self, request): # ***** this one works! ******
try:
toggle_status = request.POST.get('toggle-status')
pk = int(request.POST.get('pk'))
....
return HttpResponseRedirect(reverse('cadmin:zon_list'))
def get_queryset(self):
qs = super(ZonListView, self).get_queryset()
if self.request.POST: #***** Not working. 405 Error *****#
try:
toggle_status = self.request.POST.get('toggle-status')
pk = int(self.request.POST.get('pk'))
......
if self.request.GET:
try:
status = self.request.GET.get('status')
qs = qs.filter(status=status)
except Exception:
pass
return qs.distinct()
def get_context_data(self, **kwargs):
....
【问题讨论】:
-
可以添加错误回溯吗?
-
虽然这不是错误。这只是我正在寻找的一个可能的功能。控制台显示:不允许的方法(POST):/admin/zon/ [27/Apr/2018 14:42:44] "POST /admin/zon/ HTTP/1.1" 405 0