Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用get或post将参数传递给django视图_Django_Select_View_Option_Arguments - Fatal编程技术网

使用get或post将参数传递给django视图

使用get或post将参数传递给django视图,django,select,view,option,arguments,Django,Select,View,Option,Arguments,在我的django应用程序中,我需要调用一个名为“year”的参数的视图。然后在模板中,我使用年份名称列表创建了一个表单和一个下拉列表,此时,我对如何调用视图感到困惑 该视图名为“为该年的数据创建报告”。它需要一个年参数。 即 我试图编写如下所示的模板 <li id="yearlydataplots" class="report"> <form action="create_report_for_data_of_the_year" > <se

在我的django应用程序中,我需要调用一个名为“year”的参数的视图。然后在模板中,我使用年份名称列表创建了一个表单和一个下拉列表,此时,我对如何调用视图感到困惑

该视图名为“为该年的数据创建报告”。它需要一个年参数。 即

我试图编写如下所示的模板

<li id="yearlydataplots" class="report">
    <form action="create_report_for_data_of_the_year" >
        <select name="year" id="year">
            {% for anyear in years %}
                <option  value={{anyear}} > {{anyear}}</option>
            {% endfor %}
        </select>

        <input type="submit" value="Plot for entries of the year"/>
       </form>
    </li>
这会导致404

我更改了method=“post”,然后单击提交转到

http://127.0.0.1:8000/myapp/reports/create_report_for_data_of_the_year
这又导致了404

我知道,我遗漏了一些非常基本的东西:-)…如果有人能指出,那就太好了

提前感谢,

标记

url映射是

...
url(r'^reports/(?P<year>\d{4})/$','myapp.views.create_report_for_data_of_the_year',
    {
        'template_name':'myapp/report_for_data_of_the_year.html',
        'page_title':'report for data in the Year'

    },name='report_data_for_year' ),
...
。。。
url(r'^reports/(?P\d{4})/$),'myapp.views.create''u report'\u为'u年的'u数据'u创建'u报告'u,
{
'模板名称':'myapp/report\u for theu data\u of theu year.html',
“页面标题”:“年度数据报告”
},name='report\u data\u for\u year'),
...

您需要使用JS重定向到所需页面。或者你可以接受一年作为get参数,使用
year=request.get.get('year')

谢谢你的建议。我想,一个返回重定向('report\u data\u for\u year',year=year)就可以了。@markjason72如果两个服务器请求(使用JS它将是一个)都不是问题,那么为什么不呢。
http://127.0.0.1:8000/myapp/reports/create_report_for_data_of_the_year
def create_report_for_data_of_the_year(request,year,page_title,template_name):
    dataset=MyDataModel.objects.filter(today__year=year,creator=request.user)
    #today is a field in MyDataModel and is a datetime.datetime 
    map = create_map_of_names_and_values(dataset)
    basefilename = "plotofdataforyear%s"%year
    page_title = page_title+" "+year
    imgfilename= create_plot(map,basefilename)
    report_data={'basefilename':basefilename,'plot_image':imgfilename,'year':year,'page_title':page_title}
    report_data["name_value_dict"]=map
    req_context=RequestContext(request,context)
    return render_to_response(template_name,req_context)
...
url(r'^reports/(?P<year>\d{4})/$','myapp.views.create_report_for_data_of_the_year',
    {
        'template_name':'myapp/report_for_data_of_the_year.html',
        'page_title':'report for data in the Year'

    },name='report_data_for_year' ),
...