我应该在模板化的登录表单中使用操作吗



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

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

我只想知道什么时候需要在django模板中的<form >标记中使用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'),
]

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('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', {})

login.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' %}"#}

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

@Aditya Gupta

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

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

最新更新