2017-08-09 226 views
0

目前我有一个用户登录页面和一个用户注册页面,我怎样才能在单个页面上显示这两个页面?如何让用户使用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') 

我将如何把两者在日志中,并签署了一个页面上,如果它们是由不同的看法如何处理?预先感谢您的回应!我没有更多的细节要添加,它让我添加更多细节,我为这些不必要的文本道歉。

+0

你能削减你的代码只有相关的部分?此外,这可能是一个更好的问题https://codereview.stackexchange.com/ – WookieCoder

回答

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 
相关问题