希望将我的项目更新为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升级之前,已经为我创建了表,