当"搜索"时,我必须致电SearchView
单击按钮。通过一些打印语句,我可以看到SearchView
被调用但SearchView
中的后期函数未被调用。
以下是我在SearchView中使用的代码:
class SearchView(FormView):
template_name = 'search.html'
#form_class = SearchForm
success_url = '/mypage/downloadresult'
print(" i am inside SearchView")
def post(self, request, *args, **kwargs):
# form = self.form_class(request.POST)
form_class =SearchForm
form = self.get_form(form_class)
# form_class = self.get_form_class()
# form = self.get_form(form_class)
print(" i am inside post")
if form.is_valid():
if self.request.is_ajax():
// handle form and generate result
以下是表单的显示视图:
class DisplayView(FormView):
template_name = 'search.html'
form_class = SearchForm
print(" i am inside displayview")
success_url = '/sampleapp/search'
当使用上面的DisplayView
显示表单时,一旦用户点击"搜索"按钮,SearchView
在成功的表单上被调用。
示例应用中的网址格式:
urlpatterns = [
#url('', SearchView.as_view()),
#url('', SearchView.as_view()),
url('', displayformview.DisplayView.as_view(), name='displayview'),
url(r'^search/$', SearchView.as_view(), name='search'),
url(r'^downloadresult/$', downloadresultview.DownloadResultView.as_view(), name='downloadresult')
]
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^', include(‘sampleapp.urls')),
]
以下是我正在使用的jquery:
$('#search').click(function(){
$.post('/sampleapp/search', $(this).serialize(), function(){
//alert("submit called")
})
.done(function(){
alert("done")
})
})
我不确定上面的jquery是否真的发送了表单数据。如果有人可以帮助我了解如何使用jquery发送表单数据并成功调用post函数,那将非常有用。
我尝试使用print语句进行调试。我可以看到SearchView
中的帖子功能从未被调用过,而且#34;我在帖子中#34;永远不会在控制台中打印"。
答案 0 :(得分:0)
永远不会调用SearchView,因为您在此处设置的网址$.post('/sampleapp/search'
不存在。
试
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^', include(‘sampleapp.urls')), ---- remove that line
url(r'^sampleapp/', include(‘sampleapp.urls'))
]
或
urlpatterns = [
#url('', SearchView.as_view()),
#url('', SearchView.as_view()),
url('', displayformview.DisplayView.as_view(), name='displayview'),
url(r'^sampleapp/search/$', SearchView.as_view(), name='search'),
url(r'^downloadresult/$', downloadresultview.DownloadResultView.as_view(), name='downloadresult')
]
答案 1 :(得分:0)
是的,它现在正在运作。但现在我有另一个问题:
我有搜索按钮,点击后执行搜索。我希望用户能够下载在下载按钮单击时生成的zip文件。我尝试了上面的代码。但是一旦我点击搜索按钮,就会发生下载。下载的文件是.zip,点击后打开.cpgz没有任何数据。
以下是代码:
def post(self,request,*args, **kwargs):
zip_dir = "result_for_query_{}.zip".format(query_word)
s = StringIO.StringIO()
z = zipfile.ZipFile(s, 'w')
filename = "{}_{}.txt".format(query_word, doc_id)
# zip_dir = "result_for_query_{}.zip".format(query_word)
z = zipfile.ZipFile(zip_dir, 'a')
self.write_to_file(filename, doc, z)
z.close()
response = HttpResponse(s.getvalue(), content_type='application/zip')
response["Content-Disposition"] = "attachment; filename=%s" % zip_dir
return response
HTML
下载