request.method == 'GET',但在GET QueryDict对象中没有任何项

26 浏览
0 Comments

request.method == 'GET',但在GET QueryDict对象中没有任何项

在互联网上搜索了几个小时后,我来到这里希望有人能指导我正确的方向。

所以我是django的新手,在模板中使用ajax来传递数据给视图时遇到了困难。我有一个从数据库中获取数据的下拉菜单,当用户选择结果类型和模型时,我只是想将这些值传递给视图方法。我之所以这样做是因为视图页面通过生成一个html页面使用perl脚本来填充模板(使用extends),该脚本接受这些变量(result,model)。

view.py

 def platform_pass_rate(request):
 #一些其他的东西
 #这是当前总是true的
    if request.method == 'GET':
        #然而,这是一个问题,因为它从不得到任何东西,就像request.GET.items()返回的是空的一样
        resultVar = request.GET['resultValue']
        # modelVar = request.POST['selectedModelValue']
        subprocess.call(["perl", "static/static/perl/passRateByPlatform.pl", resultVar, "Ahmed_00"])
        #这调用perl脚本。目前设置为只输入一个默认结果-所以我现在知道GET是有效的
    else:
        subprocess.call(["perl", "static/static/perl/passRateByPlatform.pl", "liftforce", "Ahmed_25"])
        #当用户未选择任何内容时,脚本创建默认的html页面
    current_url = get_full_path(request)
    return render_to_response("data_form_platform.html", {'our_url': current_url, 'study_models': study_models,'study_results': study_results})

urls.py

from django.conf.urls import patterns, include, url
from django.conf import settings
from django.conf.urls.static import static
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('AppFalconV1.views',
    # Examples:
    url(r'^$', 'home'),
    url(r'^Pass_Rate_by_Build/$', 'build_pass_rate'),
    url(r'^Pass_Rate_by_Platform/$', 'platform_pass_rate'),
    url(r'^Platform_Coverage/$', 'platform_coverage'),
    url(r'^Regression_Coverage/$', 'regression_coverage'),
    url(r'^Coverage_All_Builds/$', 'coverage_all_builds'),
    # url(r'^test/$', 'get_current_url'),
    url(r'^time/$', 'current_datetime'),
    #url(r'^time/plus/(\d{1,2})/$', 'hours_ahead'),
    url(r'^admin/', include(admin.site.urls)),
)
if settings.DEBUG:
    urlpatterns += static(settings.STATIC_URL,
                          document_root=settings.STATIC_ROOT)
    urlpatterns += static(settings.MEDIA_URL,
                          document_root=settings.MEDIA_ROOT)

在base.html中修改的脚本


下拉按钮的位置 - data_form_platform.html

{% extends 'platform_pass_rate.html' %}
{% block data_form_platform_content %}
    
Confirm
{% endblock %}

0
0 Comments

这个问题的出现原因是Javascript代码中在页面首次加载时获取了selectedResultValue的值,但是此时没有选择任何值。当点击按钮时发起了Ajax请求,但是在点击函数中没有重新获取新的值,仍然使用了旧的空值。解决方法是将获取新值的代码移到点击函数内部。

这个问题的解决主要是修复了Javascript代码中的逻辑问题,但是还存在浏览器和perl脚本的问题需要解决。感谢帮助。

0