首页 > 解决方案 > 我应该在模板化的登录表单中使用操作吗?

问题描述

我想知道,如果我使用 login.html<form >标记中的操作,如果不使用它,在这两种情况下都很好。我能够成功登录,如果有任何错误,我的 views.py 会显示相应的错误。

我认为在渲染模板后,django 会自动将数据发送回 views.py 中的 user_login 函数,而无需为<form >标签指定 action 属性。

我只想知道什么时候需要<form >在 django 模板的标签中使用 action 属性。

我的网址.py

from django.urls import path
from . import views

# TEMPLATE URLS!
app_name = 'basic_app'

urlpatterns = [
    path('register/', views.register, name='register'),
    path('user_login/', views.user_login, name='user_login'),
]

视图.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('index'))
            else:
                return HttpResponseRedirect("ACCOUNTS NOT ACTIVE")
        else:
            print("Someone tried to login and failed!")
            print("Username: {} and password: {}".format(username, password))
            return HttpResponse("Invalid login details supplied!")
    else:
        return render(request, 'basic_app/login.html', {})

登录.html

{% extends 'basic_app/base.html' %}
{% block body_block %}

<div class="jumbotron">
    <h1>Please Login!</h1>
        <form method="post" action="{% url 'basic_app:user_login' %}">
        {% csrf_token %}
        <label for="username">Username:</label>
        <input type="text" id="username" name="username" placeholder="Enter Username">

        <label for="password">Password:</label>
        <input type="password" id="password" name="password" placeholder="*******">

        <input type="submit" name="" value="Login">
    </form>
</div>
{% endblock %}

{#action="{% url 'basic_app:user_login' %}"#}

如果我没有在<form >login.html 的标记中使用 action="{% url 'basic_app:user_login' %}",则没有任何变化。

标签: django

解决方案


@Aditya Gupta

请先看这个答案---->>>

现在在 django normaly 中,当您希望在其上指定的视图接收一些数据时,您必须定义操作属性。建议指定表单的 in action 属性的 url。


推荐阅读