Django对象“锁定”和上下文渲染

时间:2019-12-20 15:20:08

标签: django django-models django-templates django-views django-context

我有一个关于Django上下文渲染的简单(我认为)问题。

我将直接进入-

基本上我需要的是一些临时表,在我的情况下,我称为Locked。当用户按下按钮(一种形式)时,该对象将直接进入表Locked(只是一个简单的插入)。在该表的内部有一个名为is_locked的字段,如果该字段为True,则该对象需要变灰,或在html表中具有一些锁定图标。

只是某种可见的标志,即对象位于表Locked内,而另一个用户无法访问它。

但是,我的问题是,由于在我的views.py中,我的 lock 函数未返回要渲染该储物柜图标的确切html,而是返回了另一个html。

有没有办法在2个html页面上呈现相同的上下文?谢谢。

这是我的代码:

ERROR: C:\Users\elico\Documents\React workspace\pi-preperation\src\App.tsx: Unexpected token (27:20)

  25 |     switch (view) {
  26 |         case MainReducerSlice_1.ViewShown.Home:
> 27 |             return (<HomePage_1.default />);
     |                     ^
  28 |         case MainReducerSlice_1.ViewShown.Login:
  29 |         case MainReducerSlice_1.ViewShown.Register:
  30 |             return (<LoginPage_1.default />);
STACK: SyntaxError: C:\Users\elico\Documents\React workspace\pi-preperation\src\App.tsx: Unexpected token (27:20)

  25 |     switch (view) {
  26 |         case MainReducerSlice_1.ViewShown.Home:
> 27 |             return (<HomePage_1.default />);
     |                     ^
  28 |         case MainReducerSlice_1.ViewShown.Login:
  29 |         case MainReducerSlice_1.ViewShown.Register:
  30 |             return (<LoginPage_1.default />);
    at Parser.raise (C:\Users\elico\Documents\React workspace\pi-preperation\node_modules\@babel\parser\lib\index.js:6975:17)
    at Parser.unexpected (C:\Users\elico\Documents\React workspace\pi-preperation\node_modules\@babel\parser\lib\index.js:8368:16)
    at Parser.parseExprAtom (C:\Users\elico\Documents\React workspace\pi-preperation\node_modules\@babel\parser\lib\index.js:9627:20)
    at Parser.parseExprSubscripts (C:\Users\elico\Documents\React workspace\pi-preperation\node_modules\@babel\parser\lib\index.js:9210:23)
    at Parser.parseMaybeUnary (C:\Users\elico\Documents\React workspace\pi-preperation\node_modules\@babel\parser\lib\index.js:9190:21)
    at Parser.parseExprOps (C:\Users\elico\Documents\React workspace\pi-preperation\node_modules\@babel\parser\lib\index.js:9056:23)
    at Parser.parseMaybeConditional (C:\Users\elico\Documents\React workspace\pi-preperation\node_modules\@babel\parser\lib\index.js:9029:23)
    at Parser.parseMaybeAssign (C:\Users\elico\Documents\React workspace\pi-preperation\node_modules\@babel\parser\lib\index.js:8975:21)
    at Parser.parseParenAndDistinguishExpression (C:\Users\elico\Documents\React workspace\pi-preperation\node_modules\@babel\parser\lib\index.js:9765:28)      
    at Parser.parseExprAtom (C:\Users\elico\Documents\React workspace\pi-preperation\node_modules\@babel\parser\lib\index.js:9548:21)
Failed to collect coverage from C:\Users\elico\Documents\React workspace\pi-preperation\src\component\home-page\HomePage.tsx
ERROR: C:\Users\elico\Documents\React workspace\pi-preperation\src\component\home-page\HomePage.tsx: Unexpected token (32:12)

我可以提供更多代码,但是我认为对于这种类型的问题并不重要,因为所有逻辑都发生在 lock 函数内部,最后两个返回值。

2 个答案:

答案 0 :(得分:1)

我只是简要概述了您的摘要,如果不能帮助您,但您需要稍作回顾。

您在锁定模型的实例上调用DoesNotExist if opp_locked.DoesNotExist: [...] 那不是您应该使用this exception的方式。

您有一种方法.exists()可用,但仅适用于Querysets

如果您的实例不存在,则在使用Http404方法时也会返回get_object_or_404()响应。

也许您应该避免在实例之间共享主键,而应将它们替换为models.OneToOneFieldOneToOnefield

答案 1 :(得分:0)

因为我没有答案,所以我在Locked模型中添加了一个新字段is_locked,它就解决了。