在Django中编写基于函数的视图的最佳方法是什么?

时间:2019-12-14 16:08:26

标签: django python-3.x django-views

在Django中建议将视图(作为函数)写入视图的推荐方法是什么?

我在可读性等方面要求 例如:首先定义模板,然后进行翻译,然后定义模型,最后定义上下文。

这是一些示例代码:

def index(request): # Landing page, translated to the browser's language (default is english)
    template = loader.get_template("koncerti/index.html")

    # Translators: This is the text on the homepage buttons
    concerts = gettext("Koncerti")
    band = gettext("Band")
    # Translators: This is the option in the language-switch box
    foreignLanguage = gettext("eng")

    koncertiUrl = '/koncerti/international' # The URL slug leading to 'koncerti' page
    bandUrl = '/band/international' # The URL slug leading to 'band' page
    translationMode = '' # The URL slug that is leading to slovenian translation mode

    context = {
        'Concerts' : concerts,
        'Band' : band,
        'foreignLanguage' : foreignLanguage,
        'koncertiUrl' : koncertiUrl,
        'bandUrl' : bandUrl,
        'translationMode' : translationMode
    }

    return HttpResponse(template.render(context, request))

1 个答案:

答案 0 :(得分:0)

我认为您在视图中做得太多。视图应该构成正确的查询集,并对数据库进行更改。因此,主要任务是确定要渲染的 和要更新的 不是如何更新它。

决定翻译,URL解析等通常是 template 的任务。模板具有模板标签,例如{% trans … %} [Django-doc]{% url … %} [Django-doc]

强烈建议在自己构造的原始URL上使用{% url … %}。这样可以减少犯错的几率,而且很清楚您所引用的视图。

您可能还想使用render(..) [Django-doc]。此功能结合了查找模板,使用模板渲染引擎渲染该模板以及返回HTTP响应的功能。

from django.shortcuts import render

def index(request):
    return render(request, 'koncerti/index.html', {})

然后,您可以在模板中使用以下命令呈现该图片:

{% load i18n %}
<a href="{% url 'view-name' %}">{% trans 'Koncerti' %}</a>
相关问题