django中的日期时间选择器不使用forms.py

Posted

技术标签:

【中文标题】django中的日期时间选择器不使用forms.py【英文标题】:datetime picker in django without using forms.py 【发布时间】:2021-04-25 18:34:01 【问题描述】:

我想在我的 django 项目中添加一个日期时间选择器输入字段。

我发现this 教程提供了几种方法,但它们都使用forms.py,如下所示:

from django import forms

class DateForm(forms.Form):
    date = forms.DateTimeField(
        input_formats=['%d/%m/%Y %H:%M'],
        widget=forms.DateTimeInput(attrs=
            'class': 'form-control datetimepicker-input',
            'data-target': '#datetimepicker1'
        )
    )

但我没有在我的项目中使用表单。我正在使用功能视图。 我找不到如何以这种方式实现 DateTime 选择器的示例?!

感谢任何帮助。

【问题讨论】:

你有什么特别的理由不想在你的项目中使用表单吗? 我正在进行项目,快完成了,我不想切换到使用表单 您可以创建一个简单的表单子类化 djangos Form 类并使用它,真的没有理由不这样做,“不想要”不是它的原因当您有 5 种不同的工作方法可以使用 Forms 完成您需要做的事情时,这确实是 0 意义的偏好,尤其是在这个问题的上下文中 模板是使用视图函数渲染的。你是说我只为日期时间选择器的一部分制作表格?我不知道如何组合它们!可以举个例子吗? 【参考方案1】:

好的,这里有一个示例 django form,您可以在 view 中创建和使用:

from django import forms

class MyForm(forms.Form):
    datetime = forms.DateField(required=False, widget=forms.SelectDateWidget(years=range(2000, current_year))) # use this widget 
    # other fields you want

然后在你的 views.py

from .forms import MyForm

def submit_form_view(request):
    if request.method == 'POST':
        form = MyForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('home') # or somewhere else
    else:
        form = MyForm()
    return render(request, 'your_form_view.html', 'form': form)

然后像在 your_form_view.html 中常规那样呈现表单:

<form class="main-form" method="post">
    % csrf_token %
     form.as_p 
    <button class="main-button" type="submit">Save</button>
</form>

【讨论】:

我使用了教程中的第一个选项“Tempus Dominus Bootstrap 4”。并按照你说的实现了它,添加了日历图标但它不可点击,它被禁用了 这只是一个仅使用 django 的日期选择器示例,您应该尝试按照教程中的步骤准确描述它们,它将起作用

以上是关于django中的日期时间选择器不使用forms.py的主要内容,如果未能解决你的问题,请参考以下文章

为啥这个引导日期选择器不显示日期选择器?

日期/时间选择器不提供更改的值

ajax调用后div中的日期选择器不起作用

模式中的引导日期选择器不起作用

Ant 设计日期和时间选择器不通过 Formik 传递值(反应)

日期选择器不起作用[重复]