Django表单没有显示

时间:2017-12-05 07:30:08

标签: javascript python html django

我是django表单的新手,在尝试设计HTML表单时,我注意到django表单块没有显示。以下是代码:

index.html的

<body>标记:

<div class="container">
    <div class="row">
        <div class="col-md-6 col-md-offset-3">
            <div class="panel panel-login">
                <div class="panel-heading">
                    <div class="row">
                        <div class="col-xs-6">
                            <a href="#" class="active" id="login-form-link">Login</a>
                        </div>
                        <div class="col-xs-6">
                            <a href="#" id="register-form-link">Register</a>
                        </div>
                    </div>
                    <hr>
                </div>
                <div class="panel-body">
                    <div class="row">
                        <div class="col-lg-12">
                            {% block login_content %}
                            {% endblock %}
                            {% block register_content %}
                            {% endblock %}
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

login.html进入{% block login_content %}

{% extends 'index.html' %}
{% block login_content %}
<form id="login-form" action="{% url 'authentication:user_login' %}" role="form" style="display: block;" method="POST">
    {% csrf_token %}
    <label for="username">Username:</label>
    <input id="username" type="text" name="username" placeholder="Enter Username" tabindex="1" class="form-control">

    <label for="password">Password:</label>
    <input id="password" type="password" name="password" tabindex="=2" class="form-control" placeholder="Password">

    <button type="submit" class="btn btn-success">Login</button>

</form>
{% endblock %}
进入register.html

{% block register_content %}

{% extends 'index.html' %}
{% block register_content %}
    <form id="register-form" role="form" style="display: none;" enctype="multipart/form-data" method="POST">
        {% csrf_token %}
        {{ user_form.as_p }}
        {{ profile_form.as_p }}
        <input type="submit" name="" value="Register">
    </form>
{% endblock %}

在我的界别中,{{ user_form.as_p }}{{ profile_form.as_p }}根本没有出现。

当我检查我的UI的控制台时,html甚至没有从register.html中获取以下行:

<form id="register-form" role="form" style="display: none;" enctype="multipart/form-data" method="POST">

以下是负责UI交互的login.js

$(function() {

    $('#login-form-link').click(function(e) {
        $("#login-form").delay(100).fadeIn(100);
        $("#register-form").fadeOut(100);
        $('#register-form-link').removeClass('active');
        $(this).addClass('active');
        e.preventDefault();
    });
    $('#register-form-link').click(function(e) {
        $("#register-form").delay(100).fadeIn(100);
        $("#login-form").fadeOut(100);
        $('#login-form-link').removeClass('active');
        $(this).addClass('active');
        e.preventDefault();
    });

});

编辑: 这是我的views.py

def user_login(request):
    if request.method == "POST":
        username = request.POST.get('username')
        password = request.POST.get('password')

        user = authenticate(username=username, password=password)

        if user:
            if user.is_active:
                login(request, user)
                return HttpResponseRedirect(reverse('homepage'))  # main page if login is successful

            else:
                return HttpResponse("ACCOUNT NOT ACTIVE")

        else:
            print('Someone tried to log in and failed')
            print('Username: {}, password, {}'.format(username, password))
            return HttpResponse('Invalid login details supplied')

    else:
        return render(request, 'authentication/login.html', {})

def register(request):
    registered = False

    if request.method == "POST":
        user_form = UserForm(data=request.POST)
        profile_form = UserProfileInfoForm(data=request.POST)

        if user_form.is_valid() and profile_form.is_valid():

            user = user_form.save()
            user.set_password(user.password)
            user.save()

            profile = profile_form.save(commit=False)
            profile.user = user

            if 'profile_pic' in request.FILES:
                profile.profile_pic = request.FILES['profile_pic']

            profile.save()

            registered = True

        else:
            print(user_form.errors, profile_form.errors)

    else:
        user_form = UserForm()
        profile_form = UserProfileInfoForm()

    return render(request, 'authentication/register.html',
                  {
                      'user_form': user_form,
                      'profile_form': profile_form,
                      'registered': registered
                  })

好吧,似乎不可能让单个页面显示两个模板。无论如何要完成它吗?

1 个答案:

答案 0 :(得分:2)

register.html

<form id="register-form" role="form" style="display: none;" enctype="multipart/form-data" method="POST">

您正在设置style="display: none;",因此很明显表单不会显示。

编辑:我不确定在同一页面中显示两种不同形式的可行性。