Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用django让用户在同一页面上登录和注册_Django_Django Forms_Django Views - Fatal编程技术网

如何使用django让用户在同一页面上登录和注册

如何使用django让用户在同一页面上登录和注册,django,django-forms,django-views,Django,Django Forms,Django Views,目前我有一个用户登录页面和一个用户注册页面,如何在一个页面上同时拥有这两个页面 Base.html: <!doctype html> <head> {% block head %} <title>base</title> {% endblock %} </head> <body> {% block body %} {% endblock %} </body> </html&g

目前我有一个用户登录页面和一个用户注册页面,如何在一个页面上同时拥有这两个页面

Base.html:

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

<body>
{%  block body %}

{% endblock %}
</body>
</html>
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')

如果由不同的视图处理,我将如何将登录和注册都放在一个页面上?提前感谢您的回复!我没有更多的细节要添加,这让我不得不添加更多的细节。我为这篇不必要的文章道歉。

在任何情况下,如果您需要在同一页面中添加多个表单,可以应用以下技术。 例如,当前您需要在同一页面上使用两个表单“登录”和“注册”

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>

你能把代码缩减到相关的部分吗?此外,这可能是一个更好的问题
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')

]
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')
<!-- 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>
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