django注册和登录在同一个页面

时间:2021-01-15 22:11:51

标签: python django

我想在同一个模板中的同一页面上同时拥有我的登录表单和我的注册表单,所以我想将它们放在一个视图功能下,但我不太确定如何做到这一点,在这里是我的意见文件

#views.py

def register(request):
form = CreateUserForm()
if request.method == 'POST':
    form = CreateUserForm(request.POST)
    if form.is_valid():
        user = form.save()
        username = form.cleaned_data.get('username')

        messages.success(request, ' Account was created for ' + username)

        return redirect('login')

context = {'form': form}
return render(request, 'register.html', context)

@unauthenticated_user

def loginPage(request):

if request.method == 'POST':
    username = request.POST.get('username')
    password = request.POST.get('password')
    user = authenticate(request, username=username, password=password)

    if user is not None:
        login(request, user)
        return redirect('index')
    else:
        messages.info(request, 'username or password is incorrect')
context = {}
return render(request, 'login.html', context)

1 个答案:

答案 0 :(得分:0)

你可以:

views.py

   First  Second First_check Second_check
0      1       4           F            F
1      2       6           T            F
2      4       7           F            F
3      6       3           F            T
4      2       1           T            F
5      7       3           F            T
6      8       9           F            F
7      9       3           F            F

registerlogin.html


...
def RegisterLoginPage(request):
    form_register = CreateUserForm(auto_id="register_%s")
    form_login = LoginForm(auto_id="login_%s")#You can ignore this if you dont use it'
    if request.method=="POST":
        form_login = LoginForm(request.POST, auto_id="login_%s")
        form_register = CreateUserForm(request.POST,auto_id="register_%s")
        if form_login.has_changed() and form_login.is_valid():
            ##Carry out appropriate function
        elif form_register.has_changed() and form_register.is_valid():
            ##Carry out appropriate function
        elif form_login.is_invalid():## the next two elif can be ignored
            ##
        elif form_register.is_invalid():
            ##
        

        
    context={
        "form_register":form_register
        "form_login": form_login#You can ignore this if you dont use it
        }
    return render(request, "registerlogin.html", context)

auto_id 属性确保不会出现冲突的字段名称。