python - Django 个人资料编辑权限
问题描述
我有一个问题,我想确保只有登录的评委或演讲者可以编辑他们自己的个人资料,我不太确定是否应该在模板中或视图中更改它。谢谢你的建议,我是新手
这是我给评委的更新视图
@allowed_users(allowed_roles=['judges'])
def updateJudges(request, pk):
judge = Judges.objects.get(id=pk)
form = JudgesForm(instance=judge)
if request.method == "POST":
form = JudgesForm(request.POST, instance=judge)
if form.is_valid():
form.save()
return redirect('ksm_app:detail', judge.id)
context = {'form':form}
return render(request, 'ksm_app/judges_form.html', context)
这是我的更新辩论者观点
def updateDebatants(request, pk):
debatants = Debatants.objects.get(id=pk)
form = DebatantsForm(instance=debatants)
if request.method == "POST":
form = DebatantsForm(request.POST, instance=debatants)
if form.is_valid():
form.save()
return redirect('ksm_app:debatants_detail', debatants.id)
context = {'form':form}
return render(request, 'ksm_app/debatants_form.html', context)
我只想让每个用户都能看到他们的个人资料,但只有一个用户可以编辑他自己的个人资料
解决方案
如果Debatants
andJudges
模型有一个ForeignKey
(或者OneToOneField
对用户模型更好),你可以制作一个不带pk
参数的视图,因为这是由用户指定的
from django.shortcuts import get_object_or_404
def updateDebatants(request):
debatants = get_object_or_404(Debatants, user=self.request.user)
if request.method == 'POST':
form = DebatantsForm(request.POST, request.FILES, instance=debatants)
if form.is_valid():
form.save()
return redirect('ksm_app:debatants_detail', debatants.id)
else:
form = DebatantsForm(instance=debatants)
return render(request, 'ksm_app/debatants_form.html', {'form':form})
对于视图,Judges
您可以以类似的方式进行操作。
推荐阅读
- odoo - 安装 odoo 15 时出现导入错误
- regex - sed 删除选择字符和第一次出现字符之前的所有内容
- spring - 带有 Spring Boot 2.5.x 的 Azure AppConfiguration
- javascript - Dash.js 质量选择器 Mpeg
- f# - 简单 F# 代码中出现意外的关键字错误
- c# - 如何在 C# 中计算选中的复选框值
- python - 如何将“pytube”下载信息添加到 tqdm 进度条?
- java - 如何使用 Spring 批处理将 DB 的输出漂亮地打印到 JSON 文件?
- android - 如何从 JSON 中获取多个位置并在 android 中使用 Kotlin 显示在谷歌地图上?
- google-cloud-firestore - 我可以避免触发 Google Cloud 功能吗?