当前位置: 首页 > 面试题库 >

在Django中从direct_to_template移到新的TemplateView

丘友樵
2023-03-14
问题内容

希望将我的项目更新为django的最新版本,并且发现通用视图已经发生了很大变化。查看文档,我发现他们将所有通用内容更改为基于类的视图。我大部分时候都了解用法,但是对于为视图返回大量对象时我该怎么办感到困惑。当前网址可能类似于:

(r'^$', direct_to_template, { 'template': 'index.html', 'extra_context': { 'form': CodeAddForm, 'topStores': get_topStores, 'newsStories': get_dealStories, 'latestCodes': get_latestCode, 'tags':get_topTags, 'bios':get_bios}},  'index'),

如何将类似的内容转换为这些新视图?


问题答案:

传递extra_context的唯一方法是子类TemplateView并提供自己的get_context_data方法。这是我想出的DirectTemplateView类,它允许extra_context这样做direct_to_template

from django.views.generic import TemplateView

class DirectTemplateView(TemplateView):
    extra_context = None
    def get_context_data(self, **kwargs):
        context = super(self.__class__, self).get_context_data(**kwargs)
        if self.extra_context is not None:
            for key, value in self.extra_context.items():
                if callable(value):
                    context[key] = value()
                else:
                    context[key] = value
        return context

使用此类,你将替换:

(r'^$', direct_to_template, { 'template': 'index.html', 'extra_context': { 
    'form': CodeAddForm, 
    'topStores': get_topStores, 
    'newsStories': get_dealStories, 
    'latestCodes': get_latestCode, 
    'tags':get_topTags, 
    'bios':get_bios
}},  'index'),

与:

(r'^$', DirectTemplateView.as_view(template_name='index.html', extra_context={ 
    'form': CodeAddForm, 
    'topStores': get_topStores, 
    'newsStories': get_dealStories, 
    'latestCodes': get_latestCode, 
    'tags':get_topTags, 
    'bios':get_bios
}), 'index'),


 类似资料:
  • 问题内容: 最新的差值(在语言蟒/ django的小白可以理解)在之间的视图,和? 例如,来自Nathan Borror的基本应用示例 但是我也看到了 和 有什么区别,在任何特定情况下使用什么? 问题答案: https://docs.djangoproject.com/zh- CN/1.8/topics/http/shortcuts/#render 是一个在1.3中崭新的快捷方式的品牌,该快捷方式

  • 问题内容: 我有一个带有四个模型的django应用。我现在意识到这些模型之一应该在单独的应用程序中。我确实已经安装了South来进行迁移,但是我认为这不能自动解决。如何将其中一种模型从旧应用程序迁移到新模型? 另外,请记住,我将需要将此过程重复进行,以便可以迁移生产系统等。 问题答案: 假设我们有两个应用程序:通用和专用: 现在,我们要将模型common.models.cat移至特定的应用程序(精

  • 问题内容: 最新的差值(在语言蟒/ django的小白可以理解)在之间的视图,和? 例如,来自Nathan Borror的基本应用示例 但我也看到了 和 有什么区别,在任何特定情况下使用什么? 问题答案: 是一个在1.3中崭新的快捷方式的品牌,该快捷方式将自动使用,从现在开始我肯定会使用它。 是教程等中使用的标准渲染功能。要使用你必须指定 是我在视图中使用的通用视图(而不是在URL中使用),因为像

  • 问题内容: 可能是一个很糟糕的问题,但是我使用的是Django的UserCreationForm(经过稍微修改以包括电子邮件),并且我想删除Django自动显示在HTML页面上的help_text。 在我的HTML页面的“注册”部分,它具有“用户名”,“电子邮件”,“密码1”和“密码2”字段。但是用户名下面是“必填。必须少于30个字符。仅字母,数字和@ …”。在“密码确认”(密码2)下,显示“输入

  • 问题内容: 我用一些模型创建了一个新的应用程序,现在我发现一些模型没有经过深思熟虑。由于我尚未提交代码,因此明智的做法是将数据库迁移到最后的良好状态,并使用更好的模型重新进行迁移。在这种情况下,最后的良好状态是新应用程序不存在的数据库。 如何从Django 1.7的初始迁移迁移回去? 在一个可以这样做: 将从迁移历史记录中清除并删除的所有表。 如何在Django 1.7迁移中做到这一点? 问题答案

  • 问题内容: 我在生产环境上运行Django 1.6.6,最近在登台(开发服务器)上升级到1.9.7。此更新是在服务器上执行的,我按照此处“从South升级”中概述的步骤进行操作。 我注意到迁移文件的结构已更改,并且不再包含语句。这会引起问题,因为如果我从GitHub存储库中提取此新代码并运行或,它会说: 追溯指向我的urls.py,因为我在查询集中引用了模型: 在1.9升级之前,已经为我创建了表,