【问题标题】:Django , How can I set the default value to today of input date(not using forms)?Django,如何将默认值设置为输入日期的今天(不使用表单)?
【发布时间】:2017-12-13 19:29:41
【问题描述】:

我正在使用 django 制作网站。 提交传递值后,我成功地保留了输入日期值。 但我不知道如何在提交后保留所选值。 (我没有使用表格)

另外,我想知道我如何将输入type="date"的默认值设置为今天!

这是我的页面。我想在提交后保留选择的值(提交后页面再次返回此页面)

sales.management.html

<form id="sales_search" action="{% url 'management:sales_search' %}" method="GET">
    <select title="team_choice" name="team_choice" class="select" id="team_choice">
        <option name='FC' value="FC" {% if team =='FC' %} selected {% endif %}>FC</option>
        <option name='Fitness' value="Fitness" {% if team =='Fitness' %} selected {% endif %}>fitness</option>
        <option name='Pilates' value="Pilates" {% if team =='Pilates' %} selected {% endif %}>pilates</option>
        <option name='All' value="All" {% if team =='All' %} selected {% endif %}>all</option>
    </select>
    <span>Start Day: <input type="date" class="startdate" name="startdate" value="{{ startdate }}" ></span>
    ~<span>End Day: <input type="date" class="enddate"  name="enddate"  value="{{ enddate }}" ></span>
    <button type="submit" class="btn btn-info" value="search" >search</button>
</form>

我在选择框中尝试了{% if team =='FC' %} selected {% endif %}

但是,它得到错误无法解析剩余部分:'=='FC'' from '=='FC''

views.py

def sales_search(request):
     team_choice = request.GET.get('team_choice','')
     startdate = request.GET.get('startdate','') 
     enddate = request.GET.get('enddate','') 
     #Todo ( it's a long)
       
     context = {
         .... ,
        'startdate' : startdate,
        'enddate' : enddate,
        'team':team_choice, }

    return render(request, 'management/sales_management.html', context)

提交后如何保留所选值以及如何将默认值设置为输入日期的今天?

任何帮助都会对我很有帮助,谢谢!

【问题讨论】:

  • 我知道它已经过去了一年多,但我认为,对于第一个问题,你应该使用语句“if request.method == 'GET'”和'POST' , 来定义你是采用 .GET.get 参数还是 POST.get;保留所选值可能会有所帮助。

标签: html django


【解决方案1】:

在您的模型中,您可以添加 DateField(default=date.today) 参考资料:https://docs.djangoproject.com/en/1.11/ref/models/fields/#django.db.models.DateField

【讨论】:

    【解决方案2】:

    您需要在模板中的=='FC' 之间放置一个空格。

    并在您的视图文件中将默认日期设置为今天添加

    import datetime 
    

    在你的上下文中写:

    context = {
         .... ,
        'startdate' : startdate if startdate else datetime.date.today(),
        'enddate' : enddate if enddate else datetime.date.today(),
        .....
        }
    

    【讨论】:

    • 感谢您的回答,空间有效!但是,我不能这样写上下文,因为已经有 'startdate' : startdate, 'enddate' : enddate 因为我必须保留输入的日期。还有其他方法吗?
    • 那么你想把默认日期放在哪里?
    • & enddate !我想将今天的值作为默认值显示给用户。
    • @Julia 查看我的编辑。如果在 get 请求中没有给出值,它将把 startdate 和 enddate 设置为 today。如果您总是希望结束日期为 today,您可以在您的上下文中使用 enddate: datetime.date.today()
    • 很抱歉,它不起作用。我认为它应该在请求之前显示今天的值。所以我应该更改模板而不是视图。也许制作“今天”的价值是我能做到的最快的。如果您有其他方法,请告诉我。无论如何,谢谢你的所有答案和cmets:)
    猜你喜欢
    • 2011-10-22
    • 1970-01-01
    • 2016-03-10
    • 2021-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-28
    相关资源
    最近更新 更多