必须为授权用户显示“个人资料”按钮,为未授权用户显示“登录”按钮。
基本.html
{% if not request.user.is_authenticated %}
<div class="auth__div">
<a class="a_login" href="{% url 'users:login' %}">
<button class="auth__btn">
<span class="auth__enter">Войти</span>
</button>
</a>
</div>
{% else %}
<div class="profile">
<a class="a_login" href="{% url 'users:profile' %}">
<button class="auth__btn">
<span class="profile__span">Профиль</span>
</button>
</a>
</div>
{% endif %}
问题是授权用户和未授权用户都显示“登录”,但在两种情况下都不显示“个人资料”。如果您删除请求并保留 {% if not user.is_authenticated %} ,则不会发生任何变化。
更新:
views.py:
def registration(request):
if request.method == 'POST':
form = RegistrationUserForm(data=request.POST)
if form.is_valid():
form.save()
user = form.instance
auth.login(request, user)
return HttpResponseRedirect(reverse('home'))
else:
form = RegistrationUserForm()
context = {
'title': 'Home - Регистрация',
'form': form
}
return render(request, 'users/registration.html', context)
def login(request):
if request.method == 'POST':
form = LoginUserForm(data=request.POST)
if form.is_valid():
username = request.POST['username']
password = request.POST['password']
user = auth.authenticate(username=username, password=password)
if user:
auth.login(request, user)
return HttpResponseRedirect(reverse('home'))
else:
form = LoginUserForm()
context = {
'title': 'Home - Авторизация',
'form': form
}
return render(request, 'users/login.html', context)
def profile(request):
p = render_to_string('users/profile.html')
return HttpResponse(p)
def logout(request):
auth.logout(request)
return redirect(reverse('home'))
我自己发现了错误所在,并且像往常一样,一切都很基本:
在
views.py主应用程序中有以下内容:实际上,这是它不被传输的原始存根
context。render为了解决这个问题,使用而不是更改函数就足够了HttpResponse。事实证明: