django - 在views.py中返回渲染请求后自动聚焦在电子邮件字段上
问题描述
我正在使用注册表单,它工作正常,但我想在 message.error 出现后将注意力集中在电子邮件字段上。
我是 django 新手,刚刚开始编程。
from django.shortcuts import render, redirect
from django.contrib import messages, auth
from django.contrib.auth.models import User
from django.contrib.auth import logout
from django.http import HttpResponse, HttpResponseRedirect
def signup(request):
if request.method == 'POST':
# Get Form Values
first_name = request.POST['first_name']
last_name = request.POST['last_name']
email = request.POST['email']
username = email
password = request.POST['password']
password2 = request.POST['password2']
context = {
'first_name' : first_name,
'last_name' : last_name
}
# Check if passwords match
if password == password2:
#Check username
if User.objects.filter(username=username).exists():
messages.error(request, 'Email is taken and used')
return render(request, 'accounts/signup.html', context)
else:
#Looks good
user = User.objects.create_user(username=username,
email=email, password=password,first_name=first_name,last_name=last_name)
user.save()
messages.success(request, 'You are now registered and can log in')
return HttpResponseRedirect('/#signin')
else:
messages.error(request, 'Password do not match')
return render(request, 'accounts/signup.html', context)
else:
return render(request, 'accounts/signup.html')
我只是想专注于电子邮件字段有没有 django 方法可以做到这一点
解决方案
当然有办法做到!只需在模板中切换一个布尔标志并根据该标志在模板中context
启用/禁用。autofocus
# views.py
def signup(request):
# ...your code here...
context = {
'first_name' : first_name,
'last_name' : last_name,
'auto_focus' : False,
}
# ...your code here...
messages.error(request, 'Password do not match')
context['auto_focus'] = True
return render(request, 'accounts/signup.html', context)
# ...your code here...
<!-- html -->
<input type="email" {% if auto_focus %}autofocus{% endif %} />
推荐阅读
- python - Tkinter 对齐多个帧
- symfony - 教义不在连接表中
- javascript - mirth javascript 翻译返回错误
- r - 如何根据 R 中两列中的值组合过滤我的数据集
- apache-spark - 如何在 PySpark Pipeline 中使用 XGboost
- c - C 中的有序列表仅返回一个节点(头部被覆盖)
- elasticsearch - 在 Elasticsearch 中使用通配符进行不区分大小写的搜索
- android - 应用程序启动时出现错误“调用 AppRegistery.runApplication 时出错”
- python - 'numpy.float64' 对象不能解释为整数,但我无法确定它在哪里要求整数
- javascript - 用 html 内容中的 iframe 替换 youtube 链接?