我在我的一个项目中使用了这个社交注册/注册库 django allauth。如何自定义默认模板和表单,以使其外观更好、更易于理解?
我在我的一个项目中使用了这个社交注册/注册库 django allauth。如何自定义默认模板和表单,以使其外观更好、更易于理解?
假设您已经使用TEMPLATE_DIRS
设置为项目级别的模板目录,例如:
TEMPLATE_DIRS = [
os.path.join(PROJECT_DIR, 'templates'),
]
您应该能够复制这里显示的所有文件夹到该目录中,并按需进行编辑。大多数模板似乎都在填充{% block content %}
块,因此,如果您的site_base.html
模板在某个位置定义了该块,那么最简单的方法可能是这样做。
如果您还没有设置TEMPLATE_DIRS
,您可以执行同样的操作,但将模板文件夹复制到其中一个应用程序的templates
目录中。我更喜欢设置TEMPLATE_DIRS
并将主站点模板(如base.html
)放在那里,因为它们并不真正属于特定的应用程序,但这只是一种偏好; 模板加载器应该无论哪种方式都能找到它们。
base.html
文件(仍然包含 {% block content%}
)。 - MarkTEMPLATE_DIRS
已经被弃用,现在是TEMPLATES
的一部分。请参考https://docs.djangoproject.com/en/1.8/ref/templates/upgrading/。将模板/anything复制到包中是不良实践,以后会给您带来麻烦。 - Marc在你的看法中:
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="">'
在Github上的最新版本的all-auth模块将其模板文件放在外面,但是在Pypi上的版本没有这样做。你只需要在项目目录中克隆该代码库并覆盖模板即可。就是这么简单。
使用与覆盖管理模板相同的逻辑。
示例
应用程序;它有一个templates
文件夹,指示必要模板的布局。~/.virtualenvs/yourproject/lib/python2.7/site-packages/allauth
- boldnik这些都是不错的建议。
大部分应该能够奏效。
但唯一对我有用的方法是在“project/app/templates/account/”中包含自己的模板,并确保在我的应用程序之后将“django-allauth”列入INSTALLED_APPS。
我在这里发现了这个方法:https://dev59.com/-GMk5IYBdhLWcg3w-Spm#18811664。
安装完django-allauth后,如果想要自定义它,可以将其从site-packages目录复制到项目应用程序目录中。这样,您的项目的allauth应用程序及其模板将成为默认使用的内容。然后,如果您想修改socialaccount的signup.html,请前往apps\allauth\templates\socialaccount\signup.html并在“block content”标签内进行编辑:
{% block content %}
// your customized html for signup form
{% endblock %}
git clone
而不是复制代码。 - boldnik