django 无法访问与值不关联的局部变量“context”[close]

3z6pesqy  于 2023-10-21  发布在  Go
关注(0)|答案(1)|浏览(98)

已关闭此问题为not reproducible or was caused by typos。它目前不接受回答。

此问题是由打印错误或无法再重现的问题引起的。虽然类似的问题可能是on-topic在这里,这一个是解决的方式不太可能帮助未来的读者。
10天前关闭。
Improve this question
我有一个打击的观点

def assign_item_view(request, pk):
    
    item = Item.objects.get(Serial_no=pk)
    if request.method == "POST":
        form = AssignmentForm(request.POST, instance=item)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect('/user')
    else:
        form = AssignmentForm(instance=item)

        context = {"item": item,"form": form} # move this line here
    return render(request, "workshop/Add_assignment.html", context)

`def assign_item_view(request,pk):

item = Item.objects.get(Serial_no=pk)
if request.method == "POST":
    form = AssignmentForm(request.POST, instance=item)
    if form.is_valid():
        form.save()
        return HttpResponseRedirect('/user')
else:
    form = AssignmentForm(instance=item)

    context = {"item": item,"form": form} # move this line here
return render(request, "workshop/Add_assignment.html", context)`

我得到了下面的错误
无法访问与值不关联的局部变量“context”

rekjcdws

rekjcdws1#

上下文应该 * 不 * 只在GET请求的情况下使用:

from django.shortcuts import get_object_or_404, redirect

def assign_item_view(request, pk):
    item = get_object_or_404(Item, Serial_no=pk)
    if request.method == 'POST':
        form = AssignmentForm(request.POST, request.FILES, instance=item)
        if form.is_valid():
            form.save()
            return redirect('name-of-view-for-user')
    else:
        form = AssignmentForm(instance=item)
    context = {'item': item, 'form': form}
    return render(request, 'workshop/Add_assignment.html', context)

注意:通常使用**get_object_or_404(…)[Django-doc]比直接使用.get(…)[Django-doc]更好。如果对象不存在,例如因为用户自己更改了URL,则get_object_or_404(…)将导致返回 HTTP 404 Not Found 响应,而使用.get(…)将导致 HTTP 500 Server Error
注意:虽然大多数表单不处理媒体文件,但最好还是将
request.FILES[Django-doc]传递给表单,这样,如果您稍后添加额外的媒体字段,所有使用表单的视图都会正确处理文件。
注意:您可以使用
redirect(…)[Django-doc],根据视图名称和参数确定url。这比执行字符串格式化,然后将其 Package 在一个HttpResponseRedirect**对象[Django-doc]中更安全和优雅。

相关问题