【发布时间】:2018-10-03 22:24:17
【问题描述】:
点击“搜索”按钮时,我必须致电SearchView。通过一些打印语句,我可以看到正在调用 SearchView,但未调用 SearchView 中的 post 函数。
下面是我在 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 中的 post 函数从未被调用,并且“我在 post 中”从未在控制台中打印。
【问题讨论】:
-
实际上,您告诉 jquery 在该 url
'/sampleapp/search中发布,而我在您的 django 代码中没有看到您在 url 模式中添加它的任何地方
标签: jquery ajax django jquery-ui django-forms