django - Django 对象“锁定”和上下文渲染
问题描述
我有一个简单的(我认为)问题,关于 Django 上下文渲染。
我会直接进入它-
基本上我需要的是一些临时表,在我的例子中,我称之为 Locked。当用户按下一个按钮时,它是一个表单,该对象直接进入锁定表(只是一个简单的插入)。在该表内有一个名为 is_locked 的字段,如果它为 True,则该对象需要变为灰色,或者在 html 表内有一些锁定图标。
只是某种可见的标志,一个对象在表内被锁定,另一个用户不能访问它。
但是,我的问题是,因为在我的views.py 中,我的lock函数没有返回我想要呈现该储物柜图标的确切html,而是返回另一个html。
有什么方法可以在 2 个 html 页面上呈现相同的上下文?谢谢。
这是我的代码:
views.py
def lock(request, pk):
# Linking by pk.
opp = get_object_or_404(OpportunityList, pk=pk)
opp_locked = get_object_or_404(Locked, pk=pk)
# Taking two parametters for 2 fields.
eluid = Elementiur.objects.get(eluid=pk)
user = User.objects.get(username=request.user)
# Dont bother with this one! Just pulling one field value.
field_name = 'optika_korisnik'
obj = OpportunityList.objects.get(pk=pk)
field_object = OpportunityList._meta.get_field(field_name)
field_value = getattr(obj, field_object.attname)
# This is the main part! This is where i'm inserting data into Locked table.
if opp_locked.DoesNotExist:
opp_locked.id = int(eluid.eluid)
opp_locked.locked_eluid = eluid
opp_locked.locked_comment = field_value
opp_locked.locked_user = user
opp_locked.locked_name = 'Zaključao korisnik - ' + request.user.username
opp_locked.is_locked = True
opp_locked.save()
# This is what has to be returned, but i need context on the other page.
return render(request, 'opportunity/detalji/poziv.html',
{'opp': opp, 'locked': opp_locked})
else:
# This return has the context that i need(from the first opp_locked variable)
return render(request, 'opportunity/opp_optika.html', {'locked_test': opp_locked})
我可以提供更多代码,但我认为这对于这类问题并不重要,因为所有逻辑都发生在lock函数内部,最后两个返回。
解决方案
如果这对您没有帮助,我只是对您的代码段进行了快速概述,抱歉,但您需要对其进行一些审查。
你调用DoesNotExist
了一个 Locked 模型的实例,
if opp_locked.DoesNotExist: [...]
这不是你应该使用这个异常的方式。
您有一个.exists()
可用的方法,但仅适用于Querysets
.
此外,如果您的实例不存在,您Http404
在使用get_object_or_404()
方法时已经返回响应。
也许您应该避免在实例之间共享主键并将它们替换为models.OneToOneField
(OneToOnefield)
推荐阅读
- html - div vs section vs article的技术差异
- firebase - 当我在firebase上注册用户帐户时如何创建已经制作的集合
- python - IndexError:只有整数、切片 (`:`)、省略号 (`...`)、numpy.newaxis (`None`) 和整数或布尔数组是有效的索引"
- python - Azure Function App - Python - 无需重新初始化的单一连接
- android - Flutter 应用程序与所有 android 电视/媒体盒不兼容
- docker - Docker-compose - 设置不是文字的环境变量
- python - 我在训练(和测试)我的自动编码器时损失很大
- sql-server - 包含在 SQL Server 中的索引
- java - Selenium - 查找包含类的孩子
- vim - 是否可以将抽出的历史记录保存在编号的寄存器中?(无插件)