Мне нравится Thauber Schedule datepicker, но это сборщик данных, и я не могу заставить его делать только даты. Любые рекомендации для красивых пользователей datepickers, которые содержат инструкции по интеграции с полем формы даты Django?Какая самая чистая, простая в использовании датапикер в Django?
ответ
Вы также можете просто использовать Jquery в шаблонах. Функция jQuery DateTime Picker позволяет выполнять каждую настройку.
Спасибо. Я никогда не врывался в JQuery, но через несколько часов он обманывал меня именно таким, каким хотел. –
Np, удачи в вашем проекте. Но помните, Jquery - это просто javascript на стороне клиента. Таким образом, кто-то может отправлять данные в класс формы с неправильными или вредоносными данными, таким образом проверяя все и помещая действия вида в предложение try/except. – Ali
Для проверки данных используйте формы Django (https://docs.djangoproject.com/en/dev/topics/forms/) – Olli
Если вам нравится виджет даты Django Admin, вы можете включить его в свое приложение. Преимуществом является отсутствие внешних зависимостей. Кто отвечал как-бы на группе Джанго-пользователей некоторое время назад:
Спасибо, Ars! Я действительно видел сообщение SO по этому методу, который меня немного испугал: http://bit.ly/br5lLG –
Я нашел это довольно гладко для DateTimeField
дружной вариант https://github.com/asaglimbeni/django-datetime-widget
Необходимо, чтобы включить bootstrap-timepicker css file from malot, и она работала довольно аккуратно.
Как реализовать это в элементе Django forms.Form вместо ссылки на модель? – scriptdiddy
Ничего, я понял. Спасибо за сообщение! – scriptdiddy
я боролся с подобной проблемой, и я нашел следующее решение приятно, используя гибкие формы:
Это работает очень хорошо и относительно легко реализовать, надеюсь, кто-то найдет его полезным. Удачи.
Будучи более новым для кодирования, я использовал этот пример из-за его легкости.
<form method="POST">{% csrf_token %}
<p>Start date<input type = 'date' name='start_date' ></p>
<p>End date<input type = 'date' name='end_date' ></p>
<button type="submit">Submit</button>
</form>
Это не дампикер. Хотя некоторые браузеры могут выбрать отображение даты, это определенно не норма. – spectras
@spectras: На самом деле, это * норма * с HTML5, см. [Здесь] (http://www.w3schools.com/html/html_form_input_types.asp) или [здесь] (http://html5doctor.com/html5 -формы-ввод-тип /). – theV0ID
Это норма, как в * «браузер должен знать, что у него есть дата внутри» *. Норм, однако, не говорит, как это должно быть показано. Internet Explorer, Firefox и Safari будут отображать их как обычные текстовые поля, что отлично с нормой ... но не то, что хочет OP. – spectras
Ниже то, что я делаю, нет внешних зависимостей на всех .:
models.py:
from django.db import models
class Promise(models):
title = models.CharField(max_length=300)
description = models.TextField(blank=True)
made_on = models.DateField()
forms.py:
from django import forms
from django.forms import ModelForm
from .models import Promise
class DateInput(forms.DateInput):
input_type = 'date'
class PromiseForm(ModelForm):
class Meta:
model = Promise
fields = ['title', 'description', 'made_on']
widgets = {
'made_on': DateInput(),
}
мой взгляд:
class PromiseCreateView(CreateView):
model = Promise
form_class = PromiseForm
И мой шаблон:
<form action="" method="post">{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Create" />
</form>
выбора даты выглядит следующим образом:
Django's TextInput виджет (и все его подклассы) поддерживает указание атрибута типа для установки типа формы.
Вы можете использовать это, чтобы установить тип входа в date
(W3C specification), например, следующим образом:
date = fields.DateField(widget=forms.widgets.DateInput(attrs={'type': 'date'}))
Это работает действительно красиво ... если вы используете только браузер Chrome. Атрибут HTML, необходимый для его реализации, в настоящее время не поддерживается в Safari или Firefox. – William
решение AVI также может быть сделано без использования дополнительного входного класса Джанго:
class PromiseForm(ModelForm):
class Meta:
model = Promise
fields = ['title', 'description', 'made_on']
widgets = {
'made_on': DateInput(attrs={'type': 'date'}),
}
В настоящее время в 2018 году, после выпуска версии DJango 2, довольно сложно найти виджет datepicker, который все еще работает или поддерживается. Я рекомендую django-bootstrap-datepicker-plus, что удивительно работает как на более новых, так и на старых версиях DJango. Я тестировал его в версиях Django 1.10.7 и 2.0.2, отлично работает в обеих версиях.
Установка довольно проста. Вы просто установите его.
pip install django-bootstrap-datepicker-plus
Добавить его в список установленных приложений в файл settings.py.
INSTALLED_APPS = [
'bootstrap_datepicker',
...other apps...
]
Импорт виджет в вашем forms.py файле
from bootstrap_datepicker.widgets import DatePicker
Добавить виджет на поле даты
class ToDoForm(forms.Form):
date = forms.DateField(
widget=DatePicker(
options={
"format": "mm/dd/yyyy",
"autoclose": True
}
)
)
Подробные инструкции доступны на Джанго-самозагрузки-Datepicker-плюс Github Page.
Если я задаю вопросы, которые относятся к рекомендациям softwarer, тогда они получат голосование или закрытие. Вам повезло :-) – guettli