Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果日期早于10天,Django将显示特定文本_Django_Python 3.x_Django Views - Fatal编程技术网

如果日期早于10天,Django将显示特定文本

如果日期早于10天,Django将显示特定文本,django,python-3.x,django-views,Django,Python 3.x,Django Views,我正在为一个客户做一个项目,如果用户加入日期超过十天,他希望在表中显示“警报”。我不想使用过滤器只返回满足查询的对象,因为我想显示表中的所有成员。我正在使用Django 2.x和python 3.6。任何帮助都将不胜感激 models.py: class Member(models.Model): name = models.CharField('Name', max_length=50,) join_date = models.DateField('Join Date', au

我正在为一个客户做一个项目,如果用户加入日期超过十天,他希望在表中显示“警报”。我不想使用过滤器只返回满足查询的对象,因为我想显示表中的所有成员。我正在使用Django 2.x和python 3.6。任何帮助都将不胜感激

models.py:

class Member(models.Model):
    name = models.CharField('Name', max_length=50,)
    join_date = models.DateField('Join Date', auto_now=False, auto_now_add=False,)
views.py:

def memberList(request, template_name='members/memberList.html'):
    member = Member.objects.all()
    data = {}
    data['object_list'] = member
    return render(request, template_name, data)
和我的模板memberList.html:

{% extends "base.html" %}
{% load static %}
{% block content %}
<table>
    <thead>
        <tr>
            <th>Name</th>
            <th>Join Date</th>
            <th>Alert</th>
        </tr>
    </thead>
    <tbody>
        {% for member in object_list %}
        <tr>
            <td>{{ member.name }}</td>
            <td>{{ member.join_date }}</td>
            <td> **??**</td>
        </tr>
        {% endfor %}
    </tbody>
</table>
{% endblock %}
{%extends“base.html”%}
{%load static%}
{%block content%}
名称
加入日期
警觉的
{对象_列表%中的成员的百分比}
{{member.name}
{{member.join_date}
**??**
{%endfor%}
{%endblock%}

至少有两种方法可以实现这一点

方法查找方法 编辑:这一张的信用卡转到,我在编辑我的信用卡时没有看到

首先,请确保您了解有关从模板中访问方法调用的内容

对于你的事业,你会发现最有趣的是:

(…)当然,您可以轻松访问在自己的模型上显式定义的方法

记住这一点,我鼓励你检查一下

自定义模板标记方法 您可以使用Django templates的if语句并使用自定义模板标记来计算实际结果。它应该看起来像

来自django导入模板的

导入日期时间
register=template.Library()
@register.filter(预期\u localtime=True)
def早于十天(值):
如果isinstance(值,datetime.datetime):
value=value.date()
delta=value-datetime.date.today()
返回增量天>10
然后在模板中使用它,如下所示:

(...)
        {% for member in object_list %}
        <tr>
            <td>{{ member.name }}</td>
            <td>{{ member.join_date }}</td>
            <td>{% if member.join_date|is_older_than_ten_days %}YOUR INFO
                {% else %}something else{% endif %}</td>
        </tr>
        {% endfor %}
(...)
import datetime
def memberList(request, template_name='members/memberList.html'):
    data={}
    members = Member.objects.all()
    for i in members:

        delta=datetime.datetime.today() - i.join_date
        if delta.days < 10:
           i.isOld=False
        else:
           i.isOld=True
    data["object_list"]=members
    return render(request, template_name, data)
(…)
{对象_列表%中的成员的百分比}
{{member.name}
{{member.join_date}
{%if member.join|date|大于_ten_days%}您的信息
{%else%}其他内容{%endif%}
{%endfor%}
(...)

有关详细信息,请参阅。

您可以获取所有对象,然后为每个对象添加一个字段,无论该对象是否已存在10天。您可以指定一个布尔变量,例如isOld,并通过
{%if isOld%}
在模板中呈现,如下所示:

(...)
        {% for member in object_list %}
        <tr>
            <td>{{ member.name }}</td>
            <td>{{ member.join_date }}</td>
            <td>{% if member.join_date|is_older_than_ten_days %}YOUR INFO
                {% else %}something else{% endif %}</td>
        </tr>
        {% endfor %}
(...)
import datetime
def memberList(request, template_name='members/memberList.html'):
    data={}
    members = Member.objects.all()
    for i in members:

        delta=datetime.datetime.today() - i.join_date
        if delta.days < 10:
           i.isOld=False
        else:
           i.isOld=True
    data["object_list"]=members
    return render(request, template_name, data)
导入日期时间
def成员列表(请求,模板_name='members/memberList.html'):
数据={}
members=Member.objects.all()
我谨此陈辞:
delta=datetime.datetime.today()-i.join\u date
如果增量天数<10:
i、 isOld=False
其他:
i、 isOld=True
数据[“对象列表”]=成员
返回渲染(请求、模板名称、数据)
在模板中,您可以:

{% extends "base.html" %}
{% load static %}
{% block content %}
<table>
    <thead>
    <tr>
        <th>Name</th>
        <th>Join Date</th>
        <th>Alert</th>
    </tr>
</thead>
<tbody>
    {% for member in object_list %}
    <tr>
        <td>{{ member.name }}</td>
        <td>{{ member.join_date }}</td>
        {% if member.isOld %}
        <td style="color:red;"> Old Alert</td>
        {% else %}
        <td style="color:green;"> New Alert</td>
        {% endif %}
    </tr>
    {% endfor %}
</tbody>
</table>
{% endblock %}
{%extends“base.html”%}
{%load static%}
{%block content%}
名称
加入日期
警觉的
{对象_列表%中的成员的百分比}
{{member.name}
{{member.join_date}
{%if member.isOld%}
旧警报
{%else%}
新警报
{%endif%}
{%endfor%}
{%endblock%}

您可以简单地向模型中添加一个方法,如下所示:

class Member(models.Model):
    name = models.CharField('Name', max_length=50,)
    join_date = models.DateField('Join Date', auto_now=False, auto_now_add=False,)

    def older_than_ten_days(self):
        return (datetime.date.today() - self.join_date).days > 10
然后,您的模板就变成:

    <tr>
        <td>{{ member.name }}</td>
        <td>{{ member.join_date }}</td>
        <td>{{ member.older_than_ten_days }}</td>
    </tr>

{{member.name}
{{member.join_date}
{{member.older_than_ten_days}

但是,如果需要向该方法传递更多参数,如可变天数,则必须使用

,您可以使用Models.object.filter在views.py中进行过滤

如图所示,我在项目中所做的是使用HTML默认日期进行日期选择,即proj1/templates/tasks.HTML

<form method="POST" action="/tasks/">
      {% csrf_token %}
      <input type="date" value="date" id="date" name="date">
      <button type="submit" class="btn-submit">Submit</button>
</form>
然后在proj1/app1/views.py中

def tasks(request):
if request.method == "POST":
    date01 = request.POST['date']
    s1 = request.session['session_id']
    if Tasks01.objects.filter(day=date01).exists():
        print('yes')
        task = Tasks01.objects.filter(day=date01,registerdb4=s1)
        return render(request, "tasks.html", {'task': task})
    else:
        print("no records")
        return render(request, "tasks.html")
return render(request, "tasks.html")
嘿,我的答案对你有用吗?如果是,请接受其中任何一个。