Django/Python - 覆盖初始加载值

Django/Python - overwrite initial loaded values

我是 Django 的新手,我一直在努力解决以下问题:

我有一个视图,最初有 set1=0(False) 和 set2=1(True)。用户可以交换它,因此设置 set1=1(True) 和 set2=0(False)。用户可以通过按 'Update' 按钮来执行此操作。我的问题是,它确实在后端发生了变化,但是 frontend/view/html 没有更新。我不知道为什么..

我创建了一个小示例,如果它有效,我也会让我的 Django 案例正常工作..

我有以下内容:

views.py

所以首先使用这个视图,设置set1和set2的初始值:

class MainSettingsView(generic.TemplateView):
    extra_context = {"main_page": "active"}

    context_object_name = 'main'
    template_name = 'index.html'

    set1 = int(model.set1 == True)
    set2 = int(model.set2 == True)

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        model = Setting12.objects.get(pk=1)

        context['set1'] = int(model.set1 == True)
        context['set2'] = int(model.set2 == True)
        return context    

然后,根据单选按钮中选择的选项,它会更改 model/db,因此也会更改 set1 和 set2:

class UpdateButton(generic.TemplateView):
        extra_context = {"main_page": "active"}
        context_object_name = 'setting12'
        template_name = 'index.html'
    
        def post(self, request, queryset=None, *args, **kwargs):
    
            if update_type == "set1":

                model = Setting12.objects.get(pk=1)
                model.set1 = True
                model.set2 = False
    
                return redirect(reverse("main"))
    
            elif update_type == "set2":

                model = Setting12.objects.get(pk=1)
                model.set1 = False
                model.set2 = True
    
                return redirect(reverse("main"))

对于上下文,这是我在html中使用的:

index.html

<form class="card" action="{% url 'setting12' %}" method="POST" enctype="multipart/form-data">
    {% csrf_token %}

        <h3 class="card-title">Update Settings</h3>


        <input type="radio" name="update_type" value="set1" {% if view.set1 %}checked {%endif%}>    set1
        {% if view.set1 is 1 %} ( Current setting ) {% else %} {% endif %}</input>

        <input type="radio" name="update_type" value="set2" {% if view.set2 %}checked {%endif%}>      Set2
        {% if view.set2 is 1 %} ( Current setting ) {% else %} {% endif %}</input>

        <button class="btn btn-primary" type="submit">Update</button>

</form>

我确实看到数据库发生了变化,按下按钮时 set1 和 set2 的值发生了变化。但我还看到,当它从 MainSettingsView > UpdateButton > MainSettingsView 开始时,模型没有被重新读取……它不会再次遍历模型。所以我确实认为这是没有获得更新视图的问题。但是我找不到办法...

有人可以帮助我吗?到目前为止我花了几天时间:s

我终于明白了=D!!

通过删除我的 index.html 中的 view. 部分,并删除 set1 = int(model.set1 == True) set2 = int(model.set2 == True) 我删除了无法再覆盖的整个初始设置。在那之后它完全起作用了:)