用另一种方法django访问GET请求

时间:2017-11-20 06:59:11

标签: django django-forms

我的html中有一个表单元素。

<form action="" method="GET">
            <input type="text" name="start_date" placeholder="From" value="{{ request.GET.start_date }}">
            <input type="text" name="end_date" placeholder="To" value="{{ request.GET.end_date }}">
</form>

我想访问我的一个view.py方法中的start_dateend_date,但我一直都是None。 到目前为止,我已经尝试过:

temp = request.GET.get('start_date', None)
temp = request.GET['start_date']

可能是什么问题?如何访问start_dateend_date

编辑:我想用这种方法访问它:

def download_pdf(request):
    response = HttpResponse(content_type='application/pdf')
    response['Content-Disposition'] = 'attachment; filename=%s' % 'invoice.pdf'

    books = books.objects.all()
    date = request.GET.get('start_date', None)
    books.filter(order__date = temp)

    c = canvas.Canvas(response)
    c.drawText(date)
    c.showPage()
    c.save()
    return response

1 个答案:

答案 0 :(得分:1)

提交该表单后,您可以获得end_date<form action="." method="GET"> <input type="text" name="start_date" placeholder="From" value="{{ request.GET.start_date }}"> <input type="text" name="end_date" placeholder="To" value="{{ request.GET.end_date }}"> <input type="submit" value="submit"> </form> 。与POST方法一样,GET表单也希望您从前端提交。

http://localhost:8000/?start_date=test_start_date&end_date=test_end_date

或者忘记表单方法只需在url中附加参数即可。像这样......

start_date = request.GET.get('start_date')
if start_date:
    print(start_date)

编辑:

您必须在访问之前检查GET字典。因为start_date不会出现在每个GET请求中。一旦用户提交了GET请求,我们就可以访问GET参数....

# Create your views here.
def index(request):
    start_date = request.GET.get('start_date')
    if start_date:
        print(start_date)
    return render(request, 'base.html')


# base.html
<form action="." method="GET">
  <input type="text" name="start_date" placeholder="From" value="testing">
  <input type="text" name="end_date" placeholder="To" value="testing">
  <input type="submit" value="submit">
</form>

编辑2:

import React from 'react';
import { Grid } from 'react-virtualized';
import { Scrollbars } from 'react-custom-scrollbars';

class ScrollableGrid extends React.Component {
    handleScroll = ({ target }) => {
        const { scrollTop, scrollLeft } = target;

        this.Grid.handleScrollEvent({ scrollTop, scrollLeft });
    };

    Grid = null;

    render() {
        const { width, height } = this.props;

        return (
            <Scrollbars autoHide style={{ width, height }} onScroll={this.handleScroll}>
                <Grid
                    {...this.props}
                    ref={instance => (this.Grid = instance)}
                    style={{
                        overflowX: false,
                        overflowY: false
                    }}
                />
            </Scrollbars>
        );
    }
}

const list = [
    ['Brian Vaughn', 'Software Engineer', 'San Jose', 'CA', 95125],
    ['Brian Vaughn', 'Software Engineer', 'San Jose', 'CA', 95125],
    ['Brian Vaughn', 'Software Engineer', 'San Jose', 'CA', 95125],
    ['Brian Vaughn', 'Software Engineer', 'San Jose', 'CA', 95125],
    ['Brian Vaughn', 'Software Engineer', 'San Jose', 'CA', 95125],
    ['Brian Vaughn', 'Software Engineer', 'San Jose', 'CA', 95125],
    ['Brian Vaughn', 'Software Engineer', 'San Jose', 'CA', 95125],
    ['Brian Vaughn', 'Software Engineer', 'San Jose', 'CA', 95125],
    ['Brian Vaughn', 'Software Engineer', 'San Jose', 'CA', 95125],
    ['Brian Vaughn', 'Software Engineer', 'San Jose', 'CA', 95125],
    ['Brian Vaughn', 'Software Engineer', 'San Jose', 'CA', 95125],
    ['Brian Vaughn', 'Software Engineer', 'San Jose', 'CA', 95125],
    ['Brian Vaughn', 'Software Engineer', 'San Jose', 'CA', 95125],
    ['Brian Vaughn', 'Software Engineer', 'San Jose', 'CA', 95125],
    ['Brian Vaughn', 'Software Engineer', 'San Jose', 'CA', 95125],
    ['Brian Vaughn', 'Software Engineer', 'San Jose', 'CA', 95125],
    ['Brian Vaughn', 'Software Engineer', 'San Jose', 'CA', 95125],
    ['Brian Vaughn', 'Software Engineer', 'San Jose', 'CA', 95125]
];

ReactDOM.render(
    <ScrollableGrid
        cellRenderer={({ columnIndex, key, rowIndex, style }) => {
            return (
                <div key={key} style={style}>
                    {list[rowIndex][columnIndex]}
                </div>
            );
        }}
        columnCount={list[0].length}
        columnWidth={100}
        height={300}
        rowCount={list.length}
        rowHeight={30}
        width={300}
    />,
    document.getElementById('example')
);