[PYTHON] django-allauth에서 템플릿을 재정의하는 방법은 무엇입니까?
PYTHONdjango-allauth에서 템플릿을 재정의하는 방법은 무엇입니까?
다른 질문에 대한 답은 실제로 이것이 매우 쉽다는 인상을 남깁니다.
그러나, 나는 그것을 전혀 작동시키지 못합니다.
예제 애플 리케이션 설정에서 django-allauth는 계정, openid 및 socialaccount 디렉토리에 템플릿이 있다고 가정합니다. 하지만 템플릿을 TEMPLATE_DIR / account / signup.html에 올려 놓으면로드되지 않습니다. 등록보기는 django-allauth에 번들 된 템플릿을 표시합니다. 나는 무엇을 놓치나요?
해결법
-
==============================
1.결국 django-allauth 전에 내 응용 프로그램을로드하는 것에 의지했습니다. settings.py :
결국 django-allauth 전에 내 응용 프로그램을로드하는 것에 의지했습니다. settings.py :
INSTALLED_APPS = ( ... 'myapp', 'allauth', 'allauth.account' )
이 솔루션은 예제 앱에 표시된 것과는 반대되지만 다른 방식으로는 해결할 수 없습니다.
-
==============================
2.템플릿 디렉토리에 allauth에 대한 템플릿 디렉토리를 추가하면 트릭을 수행 할 수 있습니다. Django 1.8에서는 다음과 같이 템플릿 디렉토리 설정 템플릿을 편집하여 수행 할 수 있습니다.
템플릿 디렉토리에 allauth에 대한 템플릿 디렉토리를 추가하면 트릭을 수행 할 수 있습니다. Django 1.8에서는 다음과 같이 템플릿 디렉토리 설정 템플릿을 편집하여 수행 할 수 있습니다.
'DIRS': [os.path.join(BASE_DIR, 'templates'), os.path.join(BASE_DIR, 'templates', 'allauth')],
나는 아래 코드가 다른 버전의 장고에서 작동 할 것이라고 생각한다.
TEMPLATE_DIRS = ( os.path.join(BASE_DIR,'templates'), os.path.join(BASE_DIR,'templates', 'allauth'))
-
==============================
3.오늘날 우리는 장고 -1.10.5에 있습니다 --- 장고 allauth 문서는이 점수에서 가장 도움이되지 않습니다. Django가 나열된 첫 번째 응용 프로그램의 templates 디렉토리에서 settings.py에 관계없이 TEMPLATES의 DIRS 설정을 찾은 것 같습니다. 나는 당신이 아담 스타의 답변을 구현하는 데 도움이되는 답변만을 제공하고 있습니다. 반대 URL을 도울 때까지 도움이됩니다.
오늘날 우리는 장고 -1.10.5에 있습니다 --- 장고 allauth 문서는이 점수에서 가장 도움이되지 않습니다. Django가 나열된 첫 번째 응용 프로그램의 templates 디렉토리에서 settings.py에 관계없이 TEMPLATES의 DIRS 설정을 찾은 것 같습니다. 나는 당신이 아담 스타의 답변을 구현하는 데 도움이되는 답변만을 제공하고 있습니다. 반대 URL을 도울 때까지 도움이됩니다.
urls.py 파일에 다음을 입력하십시오.
from allauth.account.views import SignupView, LoginView, PasswordResetView class MySignupView(SignupView): template_name = 'signup.html' class MyLoginView(LoginView): template_name = 'login.html' class MyPasswordResetView(PasswordResetView): template_name = 'password_reset.html' urlpatterns = [ url(r'^accounts/login', MyLoginView.as_view(), name='account_login'), url(r'^accounts/signup', MySignupView.as_view(), name='account_signup'), url(r'^accounts/password_reset', MyPasswordResetView.as_view(), name='account_reset_password'), ]
현재 views.py 파일이 있으므로 위의 내용을 다른 템플릿으로 확장 할 수 있습니다.
나는 아직도 TEMPLATES에서 필요로하는 것을 다음과 같이 추가해야합니다.
'DIRS': [ os.path.join(PROJECT_ROOT, 'templates', 'bootstrap', 'allauth', 'account'), ],
그리고이 예에서는 템플릿이 / templates / bootstrap / allauth / account에 있고, 내 경우에 있습니다. 과:
PROJECT_ROOT = os.path.normpath(os.path.dirname(os.path.abspath(__file__)))
올바른 방법 ... 올바른 방법 :
좋아, 위의 작품, 요점은, 그리고 그것을 직접 템플릿을 원하는대로 설정하는 것이 좋습니다. 그러나 소셜 앱을 포함하자 마자 명명 된보기를 제공하지 않은 dropbox_login과 같이 역 URL 오류가 발생하기 시작합니다.
질문자가 발견 한이 다른 stackoverflow 스레드에 대한 Burhan Khalid의 의견을 읽은 후에, 나는 결국 다음과 같은 작업을 발견했습니다.
'DIRS': [ os.path.join(PROJECT_ROOT, 'templates', 'example'), ]
그리고이 경우 git clone git : //github.com/pennersr/django-allauth.git에서 예제 응용 프로그램을 실행하고 있으므로 개발 서버에서 / home / mike / example / example / templates / example을 얻을 수 있습니다.
DIRS의 해당 디렉토리에 제공된 샘플 부트 스트랩 템플릿에서 전체 서브 디렉토리 계정과 socialaccount를 복사했습니다. 이는 github과 예제의 settings.py 파일에있는 노트의 디렉토리 구조와는 완전히 반대입니다.
그리고 예제 앱처럼 urls.py를 그대로두면됩니다.
url(r'^accounts/', include('allauth.urls')),
-
==============================
4.귀하의 견해에서 :
귀하의 견해에서 :
from allauth.account.views import SignupView, LoginView class MySignupView(SignupView): template_name = 'my_signup.html' class MyLoginView(LoginView): template_name = 'my_login.html'
-
==============================
5.나를 위해 하나의 솔루션 만 작동합니다.
나를 위해 하나의 솔루션 만 작동합니다.
먼저 TEMPLATE_LOADERS가 filesystem.Loader를로드하도록 만듭니다.
TEMPLATE_LOADERS = ( 'django.template.loaders.filesystem.Loader', 'django.template.loaders.app_directories.Loader', # 'django.template.loaders.eggs.Loader', )
둘째 - allauth에서 템플릿을 복사 한 경로로 TEMPLATE_DIRS를 만듭니다. allauth 앱의 템플릿 폴더에서 전체 폴더 계층을 복사했는지 확인하십시오.
TEMPLATE_DIRS = ( os.path.join(BASE_DIR, 'cms', 'templates', 'allauth'), )
이 예제에서는 내 프로젝트의 기본 앱이기 때문에 cms라는 이름의 내 앱에 대한 경로가 만들어졌습니다. base.html 템플릿 편집을 시작할 수 있습니다.
-
==============================
6.나는 이것을하는 더 좋은 방법을 발견했지만 잊었다. 모든 Auth를 사용하면 문서를 매우 쉽고 간단하게 작성할 수 있습니다. 가장 쉬운 방법은 재빨리 재발견 할 때까지. #lol
나는 이것을하는 더 좋은 방법을 발견했지만 잊었다. 모든 Auth를 사용하면 문서를 매우 쉽고 간단하게 작성할 수 있습니다. 가장 쉬운 방법은 재빨리 재발견 할 때까지. #lol
이 코드는 사용자 정의 로그인 페이지를 생성하지만 패턴은 간단하고 복제하기 쉽습니다. 이 코드를 urls.py에 넣을 수도 있고 그렇지 않을 수도 있습니다.
from allauth.account.views import LoginView class Lvx(LoginView): # Login View eXtended # beware ordering and collisions on paths template_name = "components/login.html" # don't forget to create the login page, see All Auth docs # for use. /components is in your app templates path login = Lvx.as_view() urlpatterns = [ url(r'^accounts/login/$', login), # usually up top ... ]
또한 사용자 정의 페이지를 가리키는 데 사용할 수있는 설정이 있으며,이를 편집합니다. 피드백 환영.
from https://stackoverflow.com/questions/18791136/how-to-override-template-in-django-allauth by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 파이썬에서 subprocess.call을 사용할 때 stdout을 파일로 리디렉션하는 방법은 무엇입니까? (0) | 2018.11.25 |
---|---|
[PYTHON] 파이썬 GUI 빌더 [닫기] (0) | 2018.11.25 |
[PYTHON] cProfile에서 의미있는 결과를 얻는 파이썬 (0) | 2018.11.25 |
[PYTHON] 목록에서 고유 한 값을 계산하려면 어떻게합니까? (0) | 2018.11.25 |
[PYTHON] 비 블로킹 HTTP POST 요청 보내기 (0) | 2018.11.25 |