当前位置: 首页 > 知识库问答 >
问题:

不能分配“Note.user”必须是“用户”实例。姜戈

祁彬
2023-03-14

我在运行django代码时遇到以下错误。我是一个绝对的初学者,我遵循一个教程来创建一个crud应用程序。

在我的html表单中键入信息时,我得到以下错误

ValueError:无法分配django。contrib。auth。模型。0x00000288775D3EF0处的匿名用户对象:“Note.user”必须是“user”实例

表单。例子用户=请求。我的视图中的用户。派克

views.py

from django.shortcuts import render
from django.shortcuts import render, redirect
from .models import Note

# Create your views here.

from .forms import NoteModelForm


# CRUD - create update retrieve and delete

def createView(request):
    form = NoteModelForm(request.POST or None, request.FILES or None)
    if form.is_valid():
        form.instance.user = request.user
        form.save()
        return redirect('/')

    context = {
        'form': form
    }

    return render(request, "create.html", context) 

forms.py

from django import forms

from .models import Note

class NoteModelForm(forms.ModelForm):
    class Meta:
        model = Note
        fields = ['title','url','image']

创造html

<!DOCTYPE html>
<html>
<head>
    <title>CRUD APP</title>
</head>
<body>
    <form method="POST"  enctype="multipart/form-data">
        {% csrf_token %}
        {{ form.as_p }}
        <input type="submit" name="submit">
    </form>
</body>
</html> 

共有1个答案

吕华彩
2023-03-14

如果用户未登录,请求。用户提供匿名用户,无法将其分配给表单实例。

为了避免这种情况,可以在访问视图之前添加条件。为此,您可以使用login_required decorator,如下所示

from django.contrib.auth.decorators import login_required

@login_required
def createView(request):
    ....
 类似资料:
  • 我一直在尝试创建一个django项目,该项目拥有用户,并且这些用户可以添加他们创建的书籍的标题。但每次我输入书名(不在管理页面上)时,我都会出现这个错误 models.py

  • 我在django rest auth中使用自定义寄存器序列化程序来添加注册时的新字段。 我在用户模型中有一个国家/地区模型和一个国家/地区字段,它是国家/地区的FK。 user.models user.serializers 自定义寄存器序列化器 以国家/地区为对象从客户端发送的示例数据 {用户名:“伯尼”,电子邮件:bernie@d.com,国家:{…},密码1:“密码”,密码2:“密码”} 但

  • 从django分配用户对象的正确方法是什么。contrib。auth。模型视图中的模型对象是否具有对用户的外键引用?新联系人示例如下: “new_contact.user=request.user”在/无法分配“”时抛出错误值error:“contact.user”必须是“user”实例,因为请求。用户是一个对象包装器,而不是实际用户(它还不存在)。但如果我建立新的联系。user=auth。get

  • 我在向数据库添加新的自定义用户时遇到问题。我知道网上有一些关于这个问题的帖子,但我找不到解决问题的办法。点击注册页面中的“提交”按钮后,这里是哪个模板: 它一直说:“无法分配” 源代码: 观点。巴拉圭 模特。巴拉圭 表单.PY 设置。.PY: 编辑 完全错误跟踪: 文件"C:\用户\Dawid\AppData\本地\程序\Python\Python35-32\lib\site-包\django-1

  • 问题内容: 我收到此错误为- 无法访问类型为GeoLocation的封闭实例。 必须使用类型为GeoLocation的封闭实例来限定分配(例如xxA(),其中x是GeoLocation的实例)。 新的ThreadTask(i) 上将出现此错误。我不知道为什么会这样。任何建议将不胜感激。 问题答案: 嗨,我找到了一个解决方案;-) 发生此错误的原因是,您尝试创建内部类的实例 而不创建主类的实例。 要

  • 如何修复以下错误?我需要快速的帮助。 线程“main”java.lang中出现异常。错误:未解决的编译问题:无法访问main类型的封闭实例。必须使用Main类型的封闭实例限定分配(例如x.new A(),其中x是Main的实例)。 位于com.common.Main.Main(Main.java:16) 这是我的代码供参考。如果我们解决了这个问题,那么应该只打印一次,而不是两次。如何限制“John