【发布时间】:2012-03-15 07:18:07
【问题描述】:
我将这个社会注册/注册库django allauth 用于我的一个项目。如何自定义默认模板和表单以提供更好的外观和感觉?
【问题讨论】:
-
查看这个详细易懂的答案stackoverflow.com/a/62773971/8260949
标签: django django-forms django-templates django-formwizard django-allauth
我将这个社会注册/注册库django allauth 用于我的一个项目。如何自定义默认模板和表单以提供更好的外观和感觉?
【问题讨论】:
标签: django django-forms django-templates django-formwizard django-allauth
假设您已使用 TEMPLATE_DIRS 设置设置了项目级模板目录,例如:
TEMPLATE_DIRS = [
os.path.join(PROJECT_DIR, 'templates'),
]
您应该能够将显示的所有文件夹here 复制到该目录并根据需要进行编辑。大多数模板似乎都在填充{% block content %} 块,因此如果您的site_base.html 模板在某处定义了该块,这可能是最简单的。
如果您还没有设置TEMPLATE_DIRS,您可以执行相同的操作,但将模板文件夹复制到您的一个应用程序的templates 目录中。我更喜欢设置TEMPLATE_DIRS 并保留像base.html 这样的主站点模板,因为它们并不真正属于特定的应用程序,但这实际上只是一种偏好;模板加载器应该可以找到它们。
【讨论】:
base.html(仍然是{% block content%})。
TEMPLATE_DIRS 已弃用,是模板docs.djangoproject.com/en/1.8/ref/templates/upgrading 的一部分。将模板/任何东西复制到包中是不好的做法,以后会伤害你。
github 上最新版本的 all-auth 有它的模板,但是 Pypi 上没有,你需要做的就是在你的项目目录中克隆 repo 并覆盖模板。就如此容易。
【讨论】:
在你看来:
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' %}">
我必须删除 URL 链接才能使其在我自己的模板中正常工作:
<form id="signup_form" method="post" action="">'
【讨论】:
使用与overriding admin templates相同的逻辑。
【讨论】:
查看example 应用程序;它有一个templates 文件夹,指示必要模板的布局
【讨论】:
所有这些都是很好的建议。
其中大部分应该可以工作。
不过,唯一对我有用的是将我自己的模板包含在“project/app/templates/account/”中,并确保“django-allauth”在 INSTALLED_APPS 中列出 > 我自己的应用程序。
我发现了这个here。
【讨论】:
要在安装 django-allauth 后对其进行自定义,请从 site-packages 复制它并将其粘贴到您的项目应用程序目录中。这样,默认的 allauth 应用程序及其使用的模板将是您项目的 allauth 应用程序中的那些。然后如果你想修改 socialaccount 的 signup.html 然后去 apps\allauth\templates\socialaccount\signup.html 并修改它在“块内容”标签内编辑:
{% block content %}
// your customized html for signup form
{% endblock %}
希望这会对你有所帮助。
【讨论】:
git clone 进入项目文件夹而不是复制代码。