2013-07-29 2 views
1

Я пытаюсь создать отчет из Django на основе переключателей в шаблоне, но проблема с возвратом данных из шаблона, чтобы определить, какой вариант отчета должен быть сгенерирован.Создать отчет из Django на основе ввода пользователем

шаблона фрагмент:

<form action="{% url projects.views.projectreport reporttype %}"> 
    {% csrf_token %} 
    <p> 
    <input type="radio" name="reporttype" value="All">All<br> 
    <input type="radio" name="reporttype" value="Current">Current</p> 
    <input type = "submit" value="Print Project Report"> 
    </form> 

Посмотреть фрагмент:

reporttype = 'all' 
    if 'current' in request.POST: 
     reporttype = 'current' 
    return render_to_response('index.html',{'project_list': project_list, 'reporttype': reporttype}, context_instance=RequestContext(request)) 

я могу вернуть значение из шаблона в ту же точку зрения, но это идет на другую точку зрения (projects.views.projectreport). Я, вероятно, делать что-то на самом деле основной неправильно ...

J.

ответ

2

Это не было бы «ток», который находится в request.POST, было бы ReportType. request.POST - это словарь-подобный объект, поэтому проверка будет проверять ключи, а не значения. Значение типа отчета может быть «Текущий» или «Все». Так что просто изменить свой код так

reporttype = request.POST['reporttype'] 

Это установит reporttype быть либо полностью или ток (если у вас есть набор по умолчанию в HTML - которые в настоящее время у вас нет). Вы также можете сделать то, что вы пытаетесь делая

reporttype = request.POST.get('reporttype', 'All').lower() 

который установит значение либо значение передается из радио-кнопки, или по умолчанию «Все». Также кажется, что вы хотите, чтобы он был одет в нижнюю часть, поэтому наклейка lower() на конце должна обрабатывать это для вас.

+0

Понемногу с этим немного, и я думаю, что решил. Кажется, это GET, а не POST, поскольку он перенаправляется на другую страницу. Я все еще изучаю разницу. Спасибо за помощь. – jford