Django:make user\u active=False
我有一个用户模型和一个模板,其中包含用户列表和按钮,通过单击哪个配置文件变为非活动状态来禁用用户 型号.pyDjango:make user\u active=False,django,django-models,django-templates,Django,Django Models,Django Templates,我有一个用户模型和一个模板,其中包含用户列表和按钮,通过单击哪个配置文件变为非活动状态来禁用用户 型号.py class User(AbstractUser): some user fields def block_profile(self,*args,**kwargs): user = self.user user.is_active = False user.save() messages.success(re
class User(AbstractUser):
some user fields
def block_profile(self,*args,**kwargs):
user = self.user
user.is_active = False
user.save()
messages.success(request, 'Profile successfully disabled.')
return redirect('index')
def user_list(request):
profiles = Profile.objects.all()
return render(request, "vstories/vstories.html", {'profiles':profiles})
def user_list(request):
profiles = Profile.objects.all()
return render(request, "vstories/vstories.html", {'profiles':profiles})
def deactivate_user():
if request.method==POST:
pk = request.POST.get('pk')
profile = Profile.objects.get(pk=pk)
profile.block_profile()
视图.py
class User(AbstractUser):
some user fields
def block_profile(self,*args,**kwargs):
user = self.user
user.is_active = False
user.save()
messages.success(request, 'Profile successfully disabled.')
return redirect('index')
def user_list(request):
profiles = Profile.objects.all()
return render(request, "vstories/vstories.html", {'profiles':profiles})
def user_list(request):
profiles = Profile.objects.all()
return render(request, "vstories/vstories.html", {'profiles':profiles})
def deactivate_user():
if request.method==POST:
pk = request.POST.get('pk')
profile = Profile.objects.get(pk=pk)
profile.block_profile()
vstories.html
{% for profile in profiles %}
{{ profile.nickname }}
<button> ??BLOCK_USER?? </button>
{% endfor %}
{% for profile in profiles %}
<form action="/url_of_your_deactivate_view/" method="post">
{{ profile.nickname }}
<input type="hidden" name="pk" value="{{ profile.pk }}">
<input type="submit" value="Deactivate user">
</form>
{% endfor %}
{%用于配置文件中的配置文件%}
{{profile.nickname}
?模块用户??
{%endfor%}
我是否在模型中正确编写了函数,以及如何将其插入模板以输出按钮?您不能简单地将模型的方法添加到模板中,您需要为此编写视图。您可以使用POST方法捕获要停用的配置文件的id: 视图.py
class User(AbstractUser):
some user fields
def block_profile(self,*args,**kwargs):
user = self.user
user.is_active = False
user.save()
messages.success(request, 'Profile successfully disabled.')
return redirect('index')
def user_list(request):
profiles = Profile.objects.all()
return render(request, "vstories/vstories.html", {'profiles':profiles})
def user_list(request):
profiles = Profile.objects.all()
return render(request, "vstories/vstories.html", {'profiles':profiles})
def deactivate_user():
if request.method==POST:
pk = request.POST.get('pk')
profile = Profile.objects.get(pk=pk)
profile.block_profile()
您还需要在url.py中为此视图添加一些url
class User(AbstractUser):
some user fields
def block_profile(self,*args,**kwargs):
user = self.user
user.is_active = False
user.save()
messages.success(request, 'Profile successfully disabled.')
return redirect('index')
def user_list(request):
profiles = Profile.objects.all()
return render(request, "vstories/vstories.html", {'profiles':profiles})
def user_list(request):
profiles = Profile.objects.all()
return render(request, "vstories/vstories.html", {'profiles':profiles})
def deactivate_user():
if request.method==POST:
pk = request.POST.get('pk')
profile = Profile.objects.get(pk=pk)
profile.block_profile()
然后在模板中,您可以使用一个简单的html表单,为每个概要文件的id隐藏输入。
vstories.html
{% for profile in profiles %}
{{ profile.nickname }}
<button> ??BLOCK_USER?? </button>
{% endfor %}
{% for profile in profiles %}
<form action="/url_of_your_deactivate_view/" method="post">
{{ profile.nickname }}
<input type="hidden" name="pk" value="{{ profile.pk }}">
<input type="submit" value="Deactivate user">
</form>
{% endfor %}
{%用于配置文件中的配置文件%}
{{profile.nickname}
{%endfor%}
另外,我认为你的block_profile方法应该在profile模型中,而不是用户模型中。如果你在views.py而不是models.py中编写功能更改,效果会更好。在这种情况下,我需要创建一个额外的url和模板,或者我可以不使用它吗?是否可以在没有新页面重定向的情况下在同一页面中创建新状态?是的,您必须创建一个新url,并且可以使用ajax调用来避免刷新OK,我现在就尝试一下。我得到错误“Profile”对象没有属性“deactivate”,我调用了deactivate()方法作为示例。在您的情况下,它被称为block_profile()。正如我前面提到的,你应该将这个方法移动到你的个人资料模型中。我已经编辑了答案。检查views.pyit中的block_profile(),最重要的是,它可以在不访问其他url的情况下工作!!谢谢