无法分配"Note.user"必须是"用户"实例。姜戈



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

在我的 html 表单中输入信息时,出现以下错误

ValueError:无法在0x00000288775D3EF0处分配 django.contrib.auth.models.AnonymousUser 对象:"Note.user"必须是"User"实例

form.instance.user = request.user在我的 views.py

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> 

如果用户未登录,request.user会给出 AnonymousUser,无法将其分配给表单实例。

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

from django.contrib.auth.decorators import login_required
@login_required
def createView(request):
....

最新更新