2017-08-09 10 views
0

現在、私はユーザーログインページとユーザーサインアップページを持っていますが、どのようにこれらの両方を1ページで利用できますか?djangoを使って同じページにログインして登録する方法

Base.html:

<!doctype html> 
<head> 
    {% block head %} 
    <title>base</title> 
    {% endblock %} 
</head> 

<body> 
{% block body %} 

{% endblock %} 
</body> 
</html> 

signup.html:

{% extends 'core/base.html' %} 

{% block head %} 
    <title> Sign Up</title> 
{% endblock %} 
{% block body %} 
    <h2>Sign up</h2> 

    <form method="post"> 
    {% csrf_token %} 
    {{ form.as_p }} 
    <button type="submit">Sign up</button> 
    </form> 
{% endblock %} 

login.htmlと:

{% extends 'core/base.html' %} 

{% block head %} 
    <title> Login</title> 
{% endblock %} 

{% block body %} 
<h1>Login</h1> 

<form method = 'post'> 
    {% csrf_token %} 
    {{ form.as_p }} <!--'form' comes from login view imported in urls--> 
    <button type = 'submit'>Login</button> 
</form> 

{% endblock %} 

urls.py:

from django.conf.urls import url 
from django.contrib import admin 
from django.contrib.auth.views import login 
from core import views as core_views 


urlpatterns = [ 
    url(r'^$', core_views.login_redirect, name = 'login_redirect'), 
    url(r'^admin/', admin.site.urls), 
    url(r'^login/$', login, {'template_name': 'core/login.html'}, name='login'), 
    url(r'^signup/$', core_views.signup, name='signup'), 
    url(r'^account/$', core_views.account_page, name = 'account_page') 

] 

views.py:

from django.shortcuts import render 

from django.contrib.auth import login, authenticate 
from django.contrib.auth.forms import UserCreationForm 
from django.shortcuts import render, redirect 
from django.http import HttpResponse 
from django.contrib.auth.forms import UserCreationForm 

def login_redirect(request): 
    return redirect('login') 



def signup(request): 
    if request.method == 'POST': 
     form = UserCreationForm(request.POST) 
     if form.is_valid(): 
      form.save() 
      return redirect('/account') 
    else: 
     form = UserCreationForm() 

     args = {'form': form} 
     return render(request, 'core/signup.html', args) 


def account_page(request): 
    return HttpResponse('success') 

どのように私は、ログの両方を入れて、彼らは別のビューによって処理されている場合、1つのページにサインアップするのでしょうか?お返事ありがとうございます!私は追加する細部を持っていないと私はこの不必要なテキストのために謝罪する詳細を追加しています。

+0

ことができますあなたのコードダウンのみ関連するセクションに削りますか?また、これはhttps://codereview.stackexchange.com/の方が良いかもしれません。 – WookieCoder

答えて

2

同じページに複数のフォームが必要なシナリオでは、次の手法を適用できます。 たとえば、同じページに「サインイン」と「サインアップ」の2つのフォームが必要です。 index.htmlを

<!-- Sign In Form --> 
<form> 
    <button type='submit' name='submit' value='sign_in'></button> 
</form> 
<!-- Sign Up Form --> 
<form> 
    <button type='submit' name='submit' value='sign_up'></button> 
</form> 

views.py

def index(request): 
    if request.method == "POST": 
     if request.POST.get('submit') == 'sign_in': 
      # your sign in logic goes here 
     elif request.POST.get('submit') == 'sign_up': 
      # your sign up logic goes here 
関連する問題