gpt4 book ai didi

python - Django 中过滤的最佳实践

转载 作者:行者123 更新时间:2023-11-30 23:11:05 24 4
gpt4 key购买 nike

在我的 Django 应用程序的一个页面中,我有一个页面仅在表中显示所有员工信息:

像这样:

First Name: Last Name: Age: Hire Date:
Bob Johnson 21 03/19/2011
Fred Jackson 50 12/01/1999

现在,我提示用户输入 2 个日期,我想知道在这 2 个日期之间是否雇用了员工。

对于 HTTP GET,我只渲染页面,对于 HTTP POST,我发送一个 URL,其中包含 URL 中的变量。

我的 urls.py 文件具有以下模式:

('^employees/employees_by_date/$','project.reports.filter_by_date'),
('^employees/employees_by_date/sort/(?P<begin_date>\d+)/(? P<end_date>\d+)/$', EmployeesByDate.as_view()),

我的 filter_by_date 函数如下所示:

def filter_by_date(request):
if request.method == 'GET':
return render(request,"../templates/reports/employees_by_date.html",{'form':BasicPrompt(),})
else:
form = BasicPrompt(request.POST)
if form.is_valid():
begin_date = form.cleaned_data['begin_date']
end_date = form.cleaned_data['end_date']
return HttpResponseRedirect('../reports/employees_by_date/sort/'+str(begin_date)+'/'+str(end_date)+'/')

代码工作正常,问题是我是网络开发新手,感觉我没有以正确的方式完成这个任务。我想使用最佳实践,所以任何人都可以确认我是或指导我以正确的方式按日期过滤吗?

谢谢!

最佳答案

你是对的,以这种方式查询 API 有点尴尬。如果您需要将员工姓名和其他内容添加到过滤器中,您最终会得到一个非常长的 URL,而且不灵活。

您的过滤器参数(开始和结束日期)应作为查询添加到网址中,而不是路径的一部分。
在本例中,网址将为 employees/employees_by_date/?start_date=xxx&end_date=yyy,并且可以使用 start_date = request.GET['start_date] 在 View 中检索日期>。

如果表单与 method='get' 一起使用,表单中的输入会自动转换为查询并附加在网址末尾。
如果不使用任何形式,则需要使用函数对参数进行编码,以便能够传递带有特殊字符的值,例如 \/$%

关于python - Django 中过滤的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30333254/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com