覆盖django-allauth的默认模板

use*_*563 26 django django-templates django-forms django-formwizard django-allauth

我用这个社会注册/注册图书馆django allauth作为我的一个项目.如何自定义默认模板和表单以提供更好的外观和感觉?

Chr*_*lor 22

假设您使用以下TEMPLATE_DIRS设置设置了项目级模板目录:

TEMPLATE_DIRS = (os.path.join(PROJECT_DIR, 'templates'),)
Run Code Online (Sandbox Code Playgroud)

您应该能够将此处显示的所有文件夹复制到该目录中,并根据需要进行编辑.大多数模板似乎都填充了一个{% block content %}块,所以如果你的site_base.html模板在某个地方定义了这个块,它可能是最简单的.

如果您尚未设置TEMPLATE_DIRS,则可以执行相同的操作,但将模板文件夹复制到templates其中一个应用程序的目录中.我更喜欢设置TEMPLATE_DIRS和保留base.html那里的主要网站模板,因为它们并不真正属于特定的应用程序,但这只是一个偏好; 模板加载器应该找到它们.

  • ```TEMPLATE_DIRS```已被弃用,是TEMPLATES https://docs.djangoproject.com/en/1.8/ref/templates/upgrading/的一部分.将模板/任何东西复制到包中是不好的做法,以后会伤害你. (2认同)

wha*_*atf 12

github上的最新版本的all-auth有其模板在外面,但是Pypi上的模板不是,你需要做的就是在你的项目目录中克隆repo并覆盖模板.就如此容易.

  • 克隆存储库被认为是一种非常糟糕的做法. (12认同)
  • 他可能意味着在本地克隆一个回购意味着通过进一步更新all-auth来保持最新速度更加困难. (7认同)
  • 当然,这个答案是过时的. (5认同)
  • @Red你能详细说说吗? (4认同)

Ada*_*rrh 11

在您的观点中:

from allauth.account.views import SignupView, LoginView


class MySignupView(SignupView):
    template_name = 'my_signup.html'


class MyLoginView(LoginView):
    template_name = 'my_login.html'
Run Code Online (Sandbox Code Playgroud)

请注意构建自己的模板的示例和文档.

请观看示例模板中的这篇文章:

<form id="signup_form" method="post" action="{% url 'account_signup' %}">
Run Code Online (Sandbox Code Playgroud)

我必须删除URL链接才能使其在我自己的模板中正常工作:

<form id="signup_form" method="post" action="">'
Run Code Online (Sandbox Code Playgroud)


Bur*_*lid 8

使用与覆盖管理模板相同的逻辑.