django - 如何在具有以下条件的模板中获取用户名,请告诉我?
问题描述
我想知道我在下面的代码中没有发现错误,如果在 e.html 中有其他内容,谁能告诉我如何在下面的代码中获取用户的用户名。我的情况似乎不起作用/.................................................. ..................................................... ............
e.html
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
{% if request.user %}
<a class="navbar-brand" href="">Welcome{{request.user}}</a>
{% else %}
<a class="navbar-brand" href="">no</a>
{% endif %}
</a>
views.py
def registration_view(request):
# if this is a POST request we need to process the form data
template = 'home/login.html'
if request.method == 'POST':
print("post")
# create a form instance and populate it with data from the request:
form = RegisterForm(request.POST)
# check whether it's valid:
if form.is_valid():
print("okk valid")
if User.objects.filter(username=form.cleaned_data['username']).exists():
messages.error(request,'Username already exists')
return render(request, template, {
'form': form,
'error_message': 'Username already exists.'
})
elif User.objects.filter(email=form.cleaned_data['email']).exists():
messages.error(request,'Email already exists')
return render(request, template, {
'form': form,
'error_message': 'Email already exists.'
})
elif form.cleaned_data['password'] != form.cleaned_data['password_repeat']:
messages.error(request,'Password do not match ')
return render(request, template, {
'form': form,
'error_message': 'Passwords do not match.'
})
else:
# Create the user:
user = User.objects.create_user(
form.cleaned_data['username'],
form.cleaned_data['email'],
form.cleaned_data['password']
)
user.first_name = form.cleaned_data['first_name']
user.last_name = form.cleaned_data['last_name']
# user.date = form.cleaned_data['date']
print("save reached")
user.save()
# Login the user
login(request, user)
messages.success(request,"Created your account succcessfully in thumbsapp ")
return redirect('home')
处理登录功能
def handlelogin(request): if request.method == 'POST':
loginusername = request.POST.get('username','')
loginpassword = request.POST.get('password','')
userr = authenticate(username=loginusername, password=loginpassword)
# post = User.objects.filter(username=loginusername,password=loginpassword)
if userr is not None:
login(request,userr)
return redirect('post')
return render(request,'user_homeview')
return HttpResponse('logged in')
else:
messages.error(request, "Invalid credintials your Username or Password incorrect! ")
return render(request, 'home/login.html')
解决方案
您可以使用模型表单。而且您不需要检查用户名或电子邮件是否存在,只需添加到您的模型中:
unique=True.
使用 modelform 添加新用户:
form.save()
推荐阅读
- uwp - 如何更改uwp输入控件描述的前景色
- c++ - 删除线性链表的第一个节点
- python - 如何使用 FlaskWTF 在 Flask 网站上创建一个复选框并将结果添加到 SQLAlchemy?
- node.js - socket.io 发出消息时如何处理错误?
- java - 如何使用 Joda (java) 将字符串日期转换为毫秒?
- c++ - 如何判断两个像素是否属于同一行
- pine-script - 如何让 PineScript 达到特定的顺序?
- python - 拆分DF的更清洁方法?
- ios - 如何使用核心数据中的多个值?
- asp.net-core - 如何使使用 Adobe xd 制作的设计动态化?