覆盖django-allauth的默认模板

时间:2012-02-24 20:26:40

标签: django django-forms django-templates django-formwizard django-allauth

我将此社交注册/注册库django allauth用于我的项目。如何自定义默认模板和表单以提供更好的外观和感觉?

7 个答案:

答案 0 :(得分:21)

假设您使用TEMPLATE_DIRS设置设置了项目级模板目录,如:

TEMPLATE_DIRS = (os.path.join(PROJECT_DIR, 'templates'),)

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

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

答案 1 :(得分:12)

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

答案 2 :(得分:11)

在您的观点中:

from allauth.account.views import SignupView, LoginView


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


class MyLoginView(LoginView):
    template_name = 'my_login.html'

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

尽管在示例模板中观看这篇文章:

<form id="signup_form" method="post" action="{% url 'account_signup' %}">

我必须删除网址链接才能使其在我自己的模板中正常运行:

<form id="signup_form" method="post" action="">'

答案 3 :(得分:8)

使用与overriding admin templates相同的逻辑。

答案 4 :(得分:3)

查看example应用程序;它有一个templates文件夹,指示必要模板的布局

答案 5 :(得分:2)

要在安装后自定义django-allauth,请将其从site-packages复制并粘贴到项目apps目录中。通过这种方式,默认的 allauth 应用及其使用的模板将是您项目的 allauth 应用中的应用。然后,如果您要修改 socialaccount signup.html ,请转到 apps \ allauth \ templates \ socialaccount \ signup.html 并按以下方式修改在'block content'标签内编辑:

{% block content %}
    // your customized html for signup form
{% endblock %}

希望这会对你有所帮助。

答案 6 :(得分:1)

所有这些都是很好的建议。

其中大部分都应该奏效。

唯一对我有用的是在“project / app / templates / account /”中包含我自己的模板,并确保“django-allauth”在后的INSTALLED_APPS 中列出>我自己的应用程序。

我发现了这个here