【发布时间】:2014-03-04 04:40:42
【问题描述】:
我在任何地方都找不到明确的指南来说明正确的方法。例如,我正在为我的 django 网站使用包 django-two-factor-auth。我想在模板中添加一个上下文变量并显示它。我在我的模板文件夹和同名的模板文件中创建了一个文件夹 two_factor。那部分很容易。但是我还需要继承通用视图来添加我的上下文(当然,我不想更改第三方包的源代码)。为此,我在我的项目中创建了一个新应用并将其命名为 two_factor_custom,并将以下代码添加到 views.py:
from binascii import unhexlify
from base64 import b32encode
from two_factor.views.core import SetupView
class SetupViewCustom(SetupView):
def get_context_data(self, form, **kwargs):
context = super(SetupViewCustom, self).get_context_data(form, **kwargs)
if self.steps.current == 'generator':
key = unhexlify(self.get_key('generator').encode('ascii'))
context.update({
'secret': b32encode(key).decode('ascii')
})
return context
如果您能说这是扩展或覆盖第三方软件包某些行为的正确方法,我将不胜感激。如果不是我做错了什么?
【问题讨论】:
-
没有“正确”的方法来扩展应用程序,扩展一个类并覆盖一个方法是很好的方法..
-
为什么你认为这是错误的方式?
标签: django