복붙노트

[PYTHON] django-allauth에서 템플릿을 재정의하는 방법은 무엇입니까?

PYTHON

django-allauth에서 템플릿을 재정의하는 방법은 무엇입니까?

다른 질문에 대한 답은 실제로 이것이 매우 쉽다는 인상을 남깁니다.

그러나, 나는 그것을 전혀 작동시키지 못합니다.

예제 애플 리케이션 설정에서 django-allauth는 계정, openid 및 socialaccount 디렉토리에 템플릿이 있다고 가정합니다. 하지만 템플릿을 TEMPLATE_DIR / account / signup.html에 올려 놓으면로드되지 않습니다. 등록보기는 django-allauth에 번들 된 템플릿을 표시합니다. 나는 무엇을 놓치나요?

해결법

  1. ==============================

    1.결국 django-allauth 전에 내 응용 프로그램을로드하는 것에 의지했습니다. settings.py :

    결국 django-allauth 전에 내 응용 프로그램을로드하는 것에 의지했습니다. settings.py :

    INSTALLED_APPS = (
        ...
        'myapp',
        'allauth',
        'allauth.account'
    )
    

    이 솔루션은 예제 앱에 표시된 것과는 반대되지만 다른 방식으로는 해결할 수 없습니다.

  2. ==============================

    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. ==============================

    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. ==============================

    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. ==============================

    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. ==============================

    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
        ...
    ]
    

    또한 사용자 정의 페이지를 가리키는 데 사용할 수있는 설정이 있으며,이를 편집합니다. 피드백 환영.

  7. from https://stackoverflow.com/questions/18791136/how-to-override-template-in-django-allauth by cc-by-sa and MIT license