如何修复Django中的自动登录?
如何修复Django中的自动登录 当某人通过键入URL(如如何修复Django中的自动登录?,django,django-models,django-forms,django-views,django-users,Django,Django Models,Django Forms,Django Views,Django Users,如何修复Django中的自动登录 当某人通过键入URL(如http://127.0.0.1:8000/profile/1因此,当加载页面时,它将自动登录到个人档案,例如,管理员有一个配置文件,pk=1,因此如果某个类型的URL像这样http://127.0.0.1:8000/profile/1他将在没有密码用户名的情况下登录到管理员 我想这样没有人可以登录到个人资料与链接,他只能查看个人资料,而不是登录到某人的个人资料 这是我的视图。py def profile_detail(request,p
http://127.0.0.1:8000/profile/1
因此,当加载页面时,它将自动登录到个人档案,例如,管理员有一个配置文件,pk=1
,因此如果某个类型的URL像这样http://127.0.0.1:8000/profile/1
他将在没有密码用户名的情况下登录到管理员
我想这样没有人可以登录到个人资料与链接,他只能查看个人资料,而不是登录到某人的个人资料
这是我的视图。py
def profile_detail(request,pk):
user = get_object_or_404(User, pk=pk)
model = user_register_model()
return render(request,'profile_detail_view.html',{'user':user,'model':model,})
#register view
def user_reg(request):
register = False
if request.method == 'POST':
form = user_register_form(request.POST)
if form.is_valid():
user = form.save(commit=False)
user.set_password(user.password)
user.save()
register = True
if register == True:
return HttpResponseRedirect("/accounts/login")
else:
print(form.errors)
else:
form = user_register_form()
context = {'reg':form,}
return render(request,'signup.html',context)
from django.db import models
from django.contrib.auth.models import User
from django.urls import reverse
from django.utils import timezone
# Create your models here.
class user_register_model(models.Model):
user = models.OneToOneField(User,on_delete=models.CASCADE)
join_date = models.DateTimeField(default=timezone.now)
from . import views
from django.urls import path
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
path('', views.index,name='index'),
path('accounts/signup/', views.user_reg,name='register'),
path('profile/<int:pk>',views.profile_detail,name='profile')
]
这是我的Base.html
{% if user.is_authenticated %}
<li class="nav-item">
<a class="nav-link navaour" href="{% url 'profile' pk=user.pk %}"><i class="fa fa-user"></i> Profile</a>
</li>
<li class="nav-item">
<a class="nav-link navaour" href="{% url 'logout' %}"><i class="fa fa-power-off"></i> Logout</a>
</li>
{% else %}
<li class="nav-item">
<a class="nav-link navaour" href="{% url 'register' %}"><i class="fa fa-check-square-o"></i> Sign up Free</a>
</li>
<li class="nav-item">
<a class="nav-link navaour" href="{% url 'login' %}"><i class="fa fa-user"></i> Login</a>
</li>
{% endif %}
<div class="row">
<div class="col-sm-3 col-md-2 col-5">
<label style="font-weight:bold;">Full Name</label>
</div>
<div class="col-md-8 col-6">
{{user.username}}
</div>
</div>
<hr />
<div class="row">
<div class="col-sm-3 col-md-2 col-5">
<label style="font-weight:bold;">Join Date</label>
</div>
<div class="col-md-8 col-6">
{{ model.join_date|date:"M d,Y" }}
</div>
</div>
<hr />
<div class="row">
<div class="col-sm-3 col-md-2 col-5">
<label style="font-weight:bold;">Email</label>
</div>
<div class="col-md-8 col-6">
{{ user.email }}
</div>
</div>
这是我的url.py
def profile_detail(request,pk):
user = get_object_or_404(User, pk=pk)
model = user_register_model()
return render(request,'profile_detail_view.html',{'user':user,'model':model,})
#register view
def user_reg(request):
register = False
if request.method == 'POST':
form = user_register_form(request.POST)
if form.is_valid():
user = form.save(commit=False)
user.set_password(user.password)
user.save()
register = True
if register == True:
return HttpResponseRedirect("/accounts/login")
else:
print(form.errors)
else:
form = user_register_form()
context = {'reg':form,}
return render(request,'signup.html',context)
from django.db import models
from django.contrib.auth.models import User
from django.urls import reverse
from django.utils import timezone
# Create your models here.
class user_register_model(models.Model):
user = models.OneToOneField(User,on_delete=models.CASCADE)
join_date = models.DateTimeField(default=timezone.now)
from . import views
from django.urls import path
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
path('', views.index,name='index'),
path('accounts/signup/', views.user_reg,name='register'),
path('profile/<int:pk>',views.profile_detail,name='profile')
]
来自。导入视图
从django.url导入路径
从django.conf导入设置
从django.conf.url.static导入静态
URL模式=[
路径(“”,views.index,name='index'),
路径('accounts/signup/',views.user_reg,name='register'),
路径('profile/',views.profile_detail,name='profile')
]
这是Gif视频:
我错过了base.html中的一个请求 我需要更换这一行:
{% if not user.is_authenticated %}
为此:
{% if not request.user.is_authenticated %}
您可以在视图中使用if request.user.is_authenticated:子句,也可以使用需要登录的decorator但我不想要需要登录的decorator,因为他不允许查看配置文件我想要这样的东西有人可以查看配置文件,但不能登录到配置文件,因为当我键入url时,它将自动登录到此配置文件,而无需密码和密码用户名我想要这样的东西你可以查看他的个人资料,但不能自动登录我想你还没有实现django用户身份验证和登录系统,检查文档并实现它