используя get или post для передачи аргумента в представление django - PullRequest
1 голос
/ 14 июля 2011

В моем приложении django мне нужно вызвать представление с аргументом 'year'.Затем в шаблоне я создал форму и раскрывающийся список с использованием списка названий лет. На данный момент я не понимаю, как следует вызывать представление.

Представление называется 'create_report_for_data_of_the_year'. Ожидается год аргумента.то есть

http://127.0.0.1:8000/myapp/reports/2011

Я попытался написать шаблон, как показано ниже.

<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>

Однако, когда нажата кнопка отправки, браузер переходит к

http://127.0.0.1:8000/myapp/reports/create_report_for_data_of_the_year?year=2006

, который вызывает 404.

Я изменил метод = "post", и щелчок "Отправить" переходит к

http://127.0.0.1:8000/myapp/reports/create_report_for_data_of_the_year

, который снова вызывает 404

Я знаю, япропустить что-то очень простое :-) .. Если кто-то может любезно указать на это, было бы неплохо

заранее спасибо,

mark

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

1027 *

1 Ответ

2 голосов
/ 14 июля 2011

Вам нужно сделать редирект на нужную страницу с помощью JS.Или вы можете принять год в качестве параметра get с year = request.GET.get('year').

...