2016-08-29 1 views
0

나는 고정 된 내비게이션을 가지고 있으며 사용자가 (Twitter가 사용하는 것처럼) singup \ in 할 수있는 드롭 다운 상자를 추가하려고합니다.singup signin 템플릿을 드롭 다운 메뉴로 이동하는 방법은 무엇입니까?

# project/tempates/signup.html 
{% load i18n %} 
{% load account socialaccount %} 

{% 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" method="post" action="{% url 'account_signup' %}"> 
    {% csrf_token %} 
    {{ signupform.as_p }} 
    {% if redirect_field_value %} 
    <input type="hidden" name="{{ redirect_field_name }}" value="{{ redirect_field_value }}" /> 
    {% endif %} 
    <button type="submit">{% trans "Sign Up" %} &raquo;</button> 
    </form> 

{% endblock %} 

# project/tempates/base.html 
# ... a lot of basic stuff 
<li class="dropdown"> 
    <a class="dropdown-toggle" href="#" data-toggle="dropdown">Sign In <strong class="caret"></strong></a> 
    <div class="dropdown-menu" style="padding: 15px; padding-bottom: 0px;"> 
     {% include './signup.html' %} 
# ... rest stuff 

을하고 드롭 다운 상자에 난 그냥 텍스트, 링크 로그인의 수 및 등록 확인을 위해 버튼을 참조하십시오

나는 시도했다.

전자 메일 및 암호를 입력 할 필드가 없습니다. 내가 이해하는 바와 같이, 이것은 양식에 대한 액세스가 없기 때문에 일반적으로 조회수의 작업입니다. 실행 가능한 드롭 다운 양식은 어떻게 얻을 수 있습니까?

+0

게시물에보기를 포함 할 수 있습니까? –

+0

@MichaelFourre, 여기에는 문제가있는 것으로 보입니다. 나는 SO (example - http://stackoverflow.com/questions/29499449/django-allauth-login-signup-form-on-homepage)와 인터넷 (http://notesbyanerd.com/joint-login-and)에서 찾았습니다. -signup-django-allauth-view) 일부보기 샘플 있지만 드롭 다운 폼에 연결하는 방법을 잘 모르겠습니다. 원본보기는 여기에 있습니다 - https://github.com/pennersr/django-allauth/blob/master/allauth/account/views.py – TitanFighter

+0

하지만보기는 어디 있습니까? SignupView를 부모 클래스로 사용하고 있습니까? –

답변

3

인터넷 파기 2 일 후 나는 내가 발견 한 것을 요약하고 싶다.

1. <form action='some address here'> :

는 몇 가지 방법이 있습니다. 가장 쉬운 방법.

기본적에게 AllAuth 형태를 확인하기 위해 우리는 다음을 수행해야합니다

다음
# ./manage.py shell 
>>> import allauth.account.forms as forms 
>>> f = forms.LoginForm() 
>>> print(f) 

가의 솔루션을 기반으로

<form action="{% url 'account_login' %}" method="post"> 
    {% csrf_token %} 
    <input type="hidden" name="next" value="{{ request.get_full_path }}" /> 

    <input id="id_login" name="login" placeholder="Username or e-mail" type="text" required /> 
    <input id="id_password" name="password" placeholder="Password" type="password" required /> 

    <label for="id_remember">Remember Me:</label> 
    <input id="id_remember" name="remember" type="checkbox" /> 

    <button type="submit">Login</button> 
    <a href="{% url 'account_reset_password' %}">Forgot Password?</a> 
</form> 

방법을 base.html에 직접 추가 print(f)의 버전을 편집 ->here < -

2. Contex 프로세서

a) 폴더 만들기 your_project/your_app/context_processor.

from allauth.account.forms import LoginForm 

def login_ctx_tag(request): 
    return {'loginctx': LoginForm()} 

C)을 프로젝트의 SETTINGS 추가 your_app.context_processors.login_ctx.login_form_ctx' in TEMPLATES` 섹션에서 : login_ctx.py 추가에 __init__.pylogin_ctx.py

B) -가이 개 파일을 넣습니다. 같은 뭔가 :

TEMPLATES = [ 
    { 
     'BACKEND': 'django.template.backends.django.DjangoTemplates', 
     'DIRS': [os.path.join(BASE_DIR, 'templates'), os.path.join(BASE_DIR, 'templates', 'allauth')], 
     'APP_DIRS': True, 
     'OPTIONS': { 
      'debug': DEBUG, 
      'context_processors': [ 
       'your_app.context_processors.login_ctx.login_form_ctx', # <- put your processor here 
       'django.template.context_processors.debug', 
       # [...other processors...] 
      ], 
     }, 
    }, 
] 

D) 당신의 *.html에서 당신이 다음을 추가해야합니다

{% if not user.is_authenticated %} 
    <form action="{% url 'account_login' %}" method="post"> 
     {% csrf_token %} 
     <input type="hidden" name="next" value="{{ request.get_full_path }}" /> 
     {{ loginctx }} 
     <button type="submit">Login</button> 
    </form> 
{% else %} 
    {# display something else here... (username?) #} 
{% endif %} 

3. 템플릿 태그

A) 만들기 폴더 your_project/your_app/templatetags.이 두 파일을 넣어 - login_tag.py 추가에 __init__.pylogin_tag.py

B)을 :

from django import template 
from allauth.account.forms import LoginForm 

register = template.Library() 

@register.inclusion_tag('profiles/true_login.html') 
def login_form_tag(current_page=None): 
    return {'loginform': LoginForm(), 
      'redirect_to': current_page} 

C)your_project/your_app/templates/your_app/에서 메이크업 파일 login_form.html을 내용으로 :

{% load account %} 

{% if not user.is_authenticated %} 
    <form action="{% url 'account_login' %}" method="post"> 
     {% csrf_token %} 
     <input type="hidden" name="next" value="{{ redirect_to }}" /> 
     {{ loginform }} 
     <button type="submit">Login</button> 
    </form> 
{% else %} 
    {# display something else here... (username?) #} 
{% endif %} 

D) 어떤 *.html에서 상단에 추가해야합니다. {% load login_tag %}하고, 필요한 장소에 {% login_form_tag request.get_full_path %}


2 층과 3 메소드를 추가 네이티브 AllAuth 양식을 보여줍니다. {{form}}, ->here <을 사용하여 어떻게 든 편집해야하는 경우 문서에서 몇 가지 예를 찾을 수 있습니다. 우리의 경우 form에 대한

<div class="fieldWrapper"> 
    {{ form.subject.errors }} 
    {{ form.subject.label_tag }} 
    {{ form.subject }} 
</div> 

또한 loginctx 또는 loginform

당신이 당신의 자신의 양식을 작성하거나 AllAuth을 상속에 가져올 수로 변경해야합니다 다음 문서에 표시되어있는 경우 무엇인가가 있음을 언급하고 싶 context processor 또는 templatetag입니다.

두 가지 방법

을 기반으로 -> this solution < - 필요에 따라 3 가지 방법에

는 (성공 로그인의 경우, 이전 페이지로 사용자를 반환 site.com/account/login에서 원래 AllAuth 템플릿에 리디렉션 다른) 작품 리디렉션 .

위의 모든 사항은 SignUP에 구현할 수 있습니다.

이 또한 내가 대신 site.com/account/login로 리디렉션 잘못된 사용자 이름 \ 암호의 경우 오류를 표시하는 방법을 어떤 사람을 물었다, 명제는 AJAX을 사용했지만, 현재이 내 지식의 부족합니다. 기본 AllAuth보기에 대한 연결 signin \ up 양식에 대한 기본 정보 -> here < -을 찾을 수 있습니다. 누군가 그것을 구현하거나 튜토리얼을 찾을 수 있다면 여기에 게시하십시오.

관련 문제