django-allauth로 signup 할 때 email 필드를 표시하지 않는 방법
전제
인증 주위에 django-allauth를 사용하고 있습니다만, 가입(Signup)시에 email 입력의 input이 나오는 것을 지우고 싶다
비포 애프터
Before
After
결론
django-allauth 측에서는 그러한 설정을 할 수 없었다.
꽤 시간을 들여 그 설정을 찾았지만 Email의 필드는 지울 수 없다.
결국, django-allauth가 준비하고 있는 템플릿인 signup.html
에 Javascript를 써 그 DOM를 remove 하는 것으로 해결했다.
방법
Before
After
결론
django-allauth 측에서는 그러한 설정을 할 수 없었다.
꽤 시간을 들여 그 설정을 찾았지만 Email의 필드는 지울 수 없다.
결국, django-allauth가 준비하고 있는 템플릿인 signup.html
에 Javascript를 써 그 DOM를 remove 하는 것으로 해결했다.
방법
base.html
<body>
{% include 'navbar.html' %}
<div class="container-fluid">
{% include 'messages.html' %}
{% block content %}
{% endblock content %}
</div>
<!-- Bootstrap JS -->
{% include 'js.html' %}
# ↓以下の2行を追加
{% block myJs %}
{% endblock myJs %}
</body>
2.templates 폴더에 django-allauth가 제공하는 템플릿을 프로젝트 폴더에 가져옵니다. account/signup.html에서 javascript 설정
templates/account/signup.html
{% load i18n %}
{% load bootstrap4 %}
{% block head_title %}{% trans "Signup" %}{% endblock %}
{% block content %}
<h1>{% trans "Sign Up" %}</h1>
<p>{% blocktrans %}Already have an account? Then please <a href="{{ login_url }}">sign in</a>.{% endblocktrans %}</p>
<form class="signup" id="signup_form" class="" method="post" action="{% url 'account_signup' %}">
{% csrf_token %}
{% bootstrap_form form layout='horizontal' %}
{% if redirect_field_value %}
<input type="hidden" name="{{ redirect_field_name }}" value="{{ redirect_field_value }}" />
{% endif %}
<button type="submit">{% trans "Sign Up" %} »</button>
</form>
{% endblock %}
######## この部分を追加 ############
{% block myJs %}
<script>
forms = document.getElementsByClassName('form-group row')
forms[1].remove()
</script>
{% endblock myJs %}
######################################
이렇게 함으로써 form-group과 row 클래스가 붙은 것 중에서 email의 폼만을 제거할 수 있다.
css에서
display: none;
하는 것보다 멋지다고 생각하는 웃음Reference
이 문제에 관하여(django-allauth로 signup 할 때 email 필드를 표시하지 않는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/juchilian/items/a70a590bea9a3ee7a84a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)