首页 > 解决方案 > 如何在 django 中制作更新功能

问题描述

我有一个更新功能,允许用户使用 django 使用预先填充的数据更新表单

问题一旦用户尝试进入更新页面,系统会显示以下错误:

赋值前引用的局部变量“form”

视图.py

def update(request,pk):
    instance = get_object_or_404(suspect,pk=pk)
    if request.method == "POST":
        form = suspectForm(request.POST or None,instance=instance)
        if form.is_valid():
            instance = form.save(commit = false)
            instance.user = request.user
            instance.save()
            return redirect('result',pk = instance.pk)
        else:
            form = suspectForm(instance = instance)
    return render(request,'blog/update.html',{'form':form})

更新.html

 {% extends "testbootstarp.html" %}
 {% load static %}

{% block content %}

        <div class="offset-3 col-md-6">
            <form method="post">
                <div class="form-group">{% csrf_token %}
                    {% for field in form %}
                    <div class="field">
                        <label>{{field.label_tag}}</label>
                        {{field}}
                        {% for error in field.errors %}
                            <p class="help is-danger">{{error}}</p>
                        {% endfor %}
                    </div>
                    {% endfor %}    
                </div>
                <button type="submit">edit</button>
            </form>
        </div>

{% endblock content %}

标签: djangoformsdjango-templates

解决方案


def update(request,pk):
    instance = get_object_or_404(suspect,pk=pk)
    form=suspectForm(instance = instance)
    if request.method == "POST":
        form = suspectForm(request.POST or None,instance=instance)
        if form.is_valid():
            instance = form.save(commit = false)
            instance.user = request.user
            instance.save()
            return redirect('result',pk = instance.pk)
        else:
            form = suspectForm(instance = instance)
    return render(request,'blog/update.html',{'form':form})

推荐阅读