我正在尝试覆盖 Django 应用程序中的属性,但由于某种原因,我无法覆盖 LoginView 的某些属性。我尝试将其作为我自己的基于类的视图和直接在 urlconfig 上执行,将属性作为参数传递给 as_view 函数,但没有任何效果。
更具体地说,我正在尝试覆盖 template_name,但似乎 Django 忽略了我的论点并仍在尝试查看“registration/login.html”,即使我已经在另一个中传递了我自己的 HTML 模板的另一个路径目录。我究竟做错了什么?
这是我的代码,或者我如何尝试使用它:
url(r'^accounts/logout/$', auth_views.LogoutView.as_view(template_name='accounts/login.html')),
Run Code Online (Sandbox Code Playgroud)
或者
class SigninView(LoginView):
template_name = 'login.html'
def get(request):
form = LoginForm
return render(request, self.template_name, {'form':form})
Run Code Online (Sandbox Code Playgroud)
我已经尝试更改模板名称的名称(或路径),无论是作为 as_view 函数还是在我创建的基于类的视图上,但 Django 总是寻找这个特定路径 - '/registration/login.html' -基本上到原点路径。因此,我认为 Django 由于某种原因无法识别我的覆盖并查找在 LoginView 中设置的原始属性。
错误:
TemplateDoesNotExist at /accounts/login/
registration/login.html
Request Method: GET
Request URL: http://localhost:8000/accounts/login/
Django Version: 1.11.6
Exception Type: TemplateDoesNotExist
Exception Value:
registration/login.html
Request Method: GET
Request URL: http://localhost:8000/accounts/login/...
Template-loader postmortem
Django tried loading these templates, in this …Run Code Online (Sandbox Code Playgroud)