1

我为它写了一个 index.html 和一个 views.py。我得到日期并将月份数据转换为口头数据,如下所示。它适用于索引页面,但是当我从其他页面扩展索引页面时,日期不会到来。

def index(request):

    datenow = date.today()
    datemonth = date.today().month
    if datemonth == 8:
        date_month="Ağustos"
    elif datemonth == 9:
        date_month = "Eylül"
    elif datemonth == 10:
        date_month = "Ekim"
    elif datemonth == 11:
        date_month ="Kasım"
    elif datemonth == 12:
        date_month ="Aralık"
    elif datemonth == 1:
        date_month ="Ocak"
    elif datemonth == 2:
        date_month ="Şubat"
    elif datemonth == 3:
        date_month ="Mart"
    elif datemonth == 4:
        date_month ="Nisan"
    elif datemonth == 5:
        date_month ="Mayıs"
    elif datemonth == 6:
        date_month ="Haziran"
    elif datemonth == 7:
        date_month ="Temmuz"

    news = New.objects.all()[:10]
    programs= Program.objects.filter(date=date.today())
    print date.today()
    print date_month
    template = "index.html" 
    context = {'news':news,
               'programs':programs,
               'datenow':datenow,
               'date_month':date_month}
    return render_to_response(template,context,context_instance=RequestContext(request))
4

3 回答 3

3

如果你想在每个页面中都有这个日期和时间,你应该使用 Django 上下文处理器链接这里

def datetime(request):

    datenow = date.today()
    datemonth = date.today().month
    if datemonth == 8:
        date_month="Ağustos"
    elif datemonth == 9:
    date_month = "Eylül"
    elif datemonth == 10:
        date_month = "Ekim"
    elif datemonth == 11:
    date_month ="Kasım"
    elif datemonth == 12:
        date_month ="Aralık"
    elif datemonth == 1:
        date_month ="Ocak"
    elif datemonth == 2:
        date_month ="Şubat"
    elif datemonth == 3:
        date_month ="Mart"
    elif datemonth == 4:
        date_month ="Nisan"
    elif datemonth == 5:
        date_month ="Mayıs"
    elif datemonth == 6:
        date_month ="Haziran"
    elif datemonth == 7:
        date_month ="Temmuz"


context = {'datenow':datenow,'date_month':date_month}
return context

在 settings.py

TEMPLATE_CONTEXT_PROCESSORS = (
    'django.core.context_processors.request',
    'django.contrib.auth.context_processors.auth',
    'django.core.context_processors.i18n',
    'django.core.context_processors.media',
    'django.core.context_processors.static',
    'django.contrib.messages.context_processors.messages',
    'django.core.context_processors.csrf',
    # Custom Context Proccessors
    'apps.your-app.context_processor.datetime',


)

然后在 HTML 文件中,您可以使用

{{ datenow }}{{ date_month }}

于 2012-09-03T09:46:19.313 回答
0

据我了解。你有一个从另一个页面延伸出来的页面。但另一个页面没有显示继承的数据。

这仅仅是因为index.htmlviews.py. 变量和更新是从view.index()

当另一个页面继承index.html时,它不会仅仅因为它是由另一个函数处理而不是更新日期views.index()(我希望我的想法在这里很清楚)。

解决问题的一个简单方法是复制 views.index 的内容并将变量再次发送到新的 html 模板。

于 2012-09-03T08:04:50.063 回答
0

如果我理解您的问题,那么我认为您假设扩展 index.html 页面也扩展了由def index(request). 不幸的是,您必须在每个视图中提供日期变量,因为模板index.html仅提供了一种以 html 格式查看变量的方法。

与其在每个视图中重复您的日期格式代码,这看起来像是自定义模板过滤器的一个很好的案例。看看将上面的索引函数转换为模板标签(参见https://docs.djangoproject.com/en/dev/howto/custom-template-tags/),然后您可以在视图中设置日期,例如

def my_other_view(request):
    context = {'date': my_date }

然后在您的模板文件中,您可以my_date_template_filter像这样构建使用

{extend 'index.html'}

{% block content %}
    {{ my_date|my_date_template_filter}}
{% endblock %}

当然,您必须按照上面链接中的定义定义自定义模板过滤器。

于 2012-09-03T08:07:14.273 回答