django - 我应该在模板化的登录表单中使用操作吗?
问题描述
我想知道,如果我使用 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' %}",则没有任何变化。
解决方案
@Aditya Gupta
请先看这个答案---->>>
现在在 django normaly 中,当您希望在其上指定的视图接收一些数据时,您必须定义操作属性。建议指定表单的 in action 属性的 url。
推荐阅读
- python - 间隔类 - Python
- azure - 如何使用云外壳 SSH 进入 AKS 群集并测试来自 AKS 内部的连接
- c++ - 为什么将函数 create_ll 和 display 的返回类型从 struct node* 更改为 void 后,链表的元素没有显示?
- database - 我怎样才能像这些表一样标准化
- java - 如何告诉 Google 我尝试执行该任务?
- string - Python-将字符串的二维列表转换为字符的二维列表
- java - Mockito 不模拟被模拟对象的字段
- c# - 使用 Invoke 时未捕获异常
- spring-boot - Gradle 未找到 Spring Boot 依赖项
- oracle - 您可以从其他网站调用 Oracle Apex 应用程序进程吗?