Python Django将我的密码放入浏览器url字段

Python Django将我的密码放入浏览器url字段,python,html,django,Python,Html,Django,我有以下视图类: class LoginView(View): form_class = LoginForm template_name = 'workoutcal/login.html' def post(self, request): form = self.form_class(request.POST) if form.is_valid(): email = form.cleaned_data['e

我有以下视图类:

class LoginView(View):

    form_class = LoginForm
    template_name = 'workoutcal/login.html'

    def post(self, request):

        form = self.form_class(request.POST)

        if form.is_valid():

            email = form.cleaned_data['email']
            password = form.cleaned_data['password']

            user = authenticate(email = email, password = password)

            if user is not None:

                if user.is_active:
                    login(request, user)
                    return calendar(request)
            else:
                return render(request, self.template_name, {'form':form})
        else:
            form['custom_error_message'] = 'Invalid user'
            return render(request, self.template_name, {'form':form})

    def get(self, request):

        form = self.form_class(None)

        return render(request, self.template_name, {'form':form})
此模板:

login.html

{% extends "workout/base.html" %}

{% block logoutwidget %}{% endblock %}

{% block content %}
    <form action="/workoutcal/login/">
        {% include "workoutcal/form_disp_errors.html" %}
        <input type="submit" value="Log in">
    </form>
{% endblock %}
{% csrf_token %}
{{ form.custom_error_message }}
{{ form.non_field_errors }}
{% for field in form.visible_fields %}
    <div class="row">
        <div class="col-xs-2">
            {{ field.label_tag }}
        </div>
        <div class="col-xs-2">
            {{ field }}
        </div>
        <div class="col-xs-3">
            {{ field.errors }}
        </div>
    </div>

{% endfor %}

如链接末尾所示,将显示密码。这显然不好。然而,我不明白为什么会这样。有什么想法吗?

您必须使用HTTP方法POST,为此您必须将属性
method=“POST”
设置为表单标记。就像这样:

 <form method="post" action="/workoutcal/login/" >

使用方法POST请求将在HTTP中发送查询字符串(键/值对)


注意:考虑使用PUT/PUTE来更新对象并删除REST API(默认情况下Django将使用方法POST用于所有这些情况)。

您必须使用HTTP方法POST,因为您必须将属性<代码>方法=“POST”<代码>设置为表单标签。就像这样:

 <form method="post" action="/workoutcal/login/" >

使用方法POST请求将在HTTP中发送查询字符串(键/值对)

注意:考虑使用PUT/PUTE更新对象,并为REST API删除(默认情况下Django将使用方法POST用于所有这些情况)。

添加“代码>方法=“POST”<代码>到您的FuffAddie>代码>方法=“POST”<代码>到您的窗体中。