【问题标题】:Django - Setting date as date input valueDjango - 将日期设置为日期输入值
【发布时间】:2015-01-26 13:05:03
【问题描述】:

我正在尝试将日期设置为表单中日期输入的值。但是,正如您可能已经猜到的那样,它不起作用。

这是我的模板中的内容:

<div class="form-group">
       <label for="date" class="col-md-3 control-label">Date</label>
    <div class="col-md-9">
        <input type="date" class="form-control" id="date" value="{{placement.date}}">
    </div>
</div>

这是调用它的视图以及放置模型:

class Placement(models.Model):
    student = models.ForeignKey(Student)
    email = models.EmailField(max_length=254)
    fname = models.CharField(max_length=50)
    sname = models.CharField(max_length=50)
    cname = models.CharField(max_length=100)
    position = models.CharField(max_length=50)
    house = models.CharField(max_length=50, blank=True)
    street = models.CharField(max_length=50)
    town = models.CharField(max_length=50)
    county = models.CharField(max_length=50)
    postcode = models.CharField(max_length=8)
    phone = models.CharField(max_length=20)
    length = models.IntegerField(null=True)
    category = models.CharField(max_length=50)
    date = models.DateField(null=True)
    confirmed = models.BooleanField(default=False)
    completed = models.BooleanField(default=False)
    created = models.DateTimeField(null=True)

def view_placement(request, placement_id):
    school = School.objects.get(pk=request.session['school'])
    context = {'school':school}
    if request.session['utype'] == 'a':
        context['user'] = Administrator.objects.get(pk=request.session['user'])
        context['placement'] = Placement.objects.get(pk=placement_id)
        return render(request, 'workxp/admin/view_placement.html', context)

但它不显示日期。只是一个空的日期输入...

我该如何解决这个问题?

谢谢!

【问题讨论】:

  • 您必须向我们提供调用此模板的 view.py 代码。
  • 你能上传你的观点吗[和模型详细信息,因为我们在这里最喜欢这样意味着我们会得到日期,所以,请也添加一下
  • 添加了模型和视图 :)
  • @Pictraz 建议的解决方案是否适合您?

标签: python html django


【解决方案1】:

HTML 日期应采用 YYYY-MM-DD 格式。所以你必须使用{{ value|date:"D d M Y" }} 命令进行转换。

您的代码将是:

 <input type="date" class="form-control" id="date" value="{{placement.date|date:"Y-m-d" }}">

此处的 HTML 文档:http://www.w3.org/TR/html-markup/input.date.html#input.date.attrs.value

这里的 Django 日期文档:https://docs.djangoproject.com/en/1.7/ref/templates/builtins/#date

【讨论】:

  • 谢谢!刚刚试了一下!虽然“Y M D”格式不起作用,但我使用“Y-m-d”将其更改为 HTML 接受的默认格式,这样就可以了!
  • 好。对所需的确切格式感到奇怪。 “Y M D”对我来说效果很好
【解决方案2】:

在上面的答案中注意到一个小错字——日期格式用双引号括起来,在一组双引号内。应该在'Y-m-d'周围单身才能工作!

&lt;input type="date" class="form-control" id="date" value="{{placement.date|date:"Y-m-d" }}"&gt;

应该是:

&lt;input type="date" class="form-control" id="date" value="{{placement.date|date:'Y-m-d' }}"&gt;

【讨论】:

    【解决方案3】:

    您可以使用任何日期格式。

    例如,在模板中使用{{ value|date:"SHORT_DATE_FORMAT" }}

    from django.forms import DateField
    from django.utils import formats
    # need '%d.%m.%Y' instead of 'd.m.Y' from get_format()
    dformat = ('.' + formats.get_format("SHORT_DATE_FORMAT", lang=request.LANGUAGE_CODE)).replace('.', '.%').replace('-', '-%').replace('/', '/%')[1:]
    dfield = DateField(input_formats=(dformat,))
    <date> = dfield.to_python(<string>)
    

    【讨论】:

      猜你喜欢
      • 2020-09-18
      • 1970-01-01
      • 2020-03-25
      • 2018-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-07
      • 2021-09-17
      相关资源
      最近更新 更多