html导入django,将日期从HTML导入Django视图

你没能解释“我很难让它正常工作”的真正含义,所以这最多只能算是一个局部的、有点“胡乱猜测”的答案,但无论如何:

首先,您需要使用正确的HTTP方法将字段和submit放入一个标记中,并且您的字段“name”属性(而不是“id”属性)必须与您在视图中查找的内容相匹配:

Select time period:

From:

To:

还要注意,我们用{{ start_date }}和{{ end_date }}-在模板的上下文中,data是Queryset,没有start_date或{}属性。在

然后在您的视图中,您必须正确使用request.GET.get():

^{pr2}$

.get()是一个方法,必须调用它,而不是下标(parens,而不是方括号)。请注意,在用户实际提交表单之前,这些字段将不在querystring中,GET.get(...)将返回None,因此您必须处理这种情况,要么为.get()提供默认值,要么测试表单是否已提交,根本不返回queryset(或返回空的queryset,或者返回整个未过滤的查询集等,由您选择)。这是一个返回空查询集的版本。在

另外,由于您没有使用Djangoforms.Form,因此您将得到未初始化的原始字符串,而Queryset.filter()需要Pythondatetime.date或{}对象,因此您必须手动验证和转换这些值:# ...

parsed_start_date = None

parsed_end_date = None

if start_date and end_date:

errors = {}

try:

parsed_start_date = datetime.datetime.strptime(start_date, "%d/%m/%Y")

except ValueError:

errors["start_date"] = "Invalid date" # etc..

try:

parsed_end_date = datetime.datetime.strptime(end_date, "%d/%m/%Y")

except ValueError:

errors["end_date"] = "Invalid date" # etc..

if parsed_start_date and parsed_end_date:

data = Data.objects.filter(date__range=[parsed_start_date, parsed_end_date])

else:

data = Data.objects.none() # empty queryset

context = {

'data': data,

'errors': errors,

'start_date': start_date,

'end_date': end_date

}

# etc

然后必须更改模板以适应这些更改(不要尝试将|date筛选器应用于字符串,显示错误…):

Select time period:

From:

{% if errors.start_date %}

{{ errors.start_date }}

{% endif %}

To:

{% if errors.end_date %}

{{ errors.end_date }}

{% endif %}

请注意,using a Django form将使其不那么痛苦(也更健壮)。在

你对Python似乎也不是很精通。Django是一个非常方便的pythonweb框架,但它仍然要求您至少具备HTTP、HTML和python的基本知识。如果你想完成任何事情,我建议你花点时间学习这些主题。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值