【问题标题】:django how to change database with click button on new window and close, refresh the main page?django 如何使用新窗口上的单击按钮更改数据库并关闭,刷新主页?
【发布时间】:2021-11-04 14:13:14
【问题描述】:

我制作了“警报列表”页面。 (alert_list.html)

当我单击该按钮时,它会在新窗口上呈现使用 pk 的详细信息页面。 (alert_detail.html)

alert_detail.html 上有一个确认按钮,将 event.event_status 的值从 1 更改为 0。

但是,我处理这个有点问题。

我想做的事情是..

  1. 通过单击确认按钮将 Event.event_status 值更改为 0。
  2. 关闭新窗口(详情页)
  3. 刷新主页(警报列表页面)
<alert_list.html>

{% for event_alert in event_list %}
                {% if event_alert.event_status == 1 %}
                <div class="col-1 red">
                    <div class="p-3 rounded-2" id="dash_board_patient_alert">
                        <a href="{% url 'Alert Detail' event_alert.event_id %}">{{event_alert.member_id}} {{event_alert.event_type}}</a>
                    </div>
                </div>
                
                {% endif %}
                {% endfor %}
                {{event_alert_activate_count}}
                {{pink_block}}
                {% for _ in pink_block %}
                <div class="col-1 pink">
                    <div class="p-3 rounded-2" id="dash_board_patient_alert">
                        <a href="#"></a>
                    </div>
                </div>
                {% endfor %}

<alert_detail.html>

            {% for event_alert in event_list %}
            <form method="POST" class="post-form" action ="{% url 'Alert Update' event_alert.pk %}">
            {% csrf_token %}
            {{ form }}
            <button
                type="submit"
                class="btn btn-primary"
                id="patient_alert_result_confirm">
                Confirm
            </button>
            </form>
            {% endfor %}

<alert_update.html>
I don't have any idea.. help me this page
<views.py>

def alert_list(request):
Event.objects.order_by('-event_time')[:12]
    event_alert_activate_count = Event.objects.filter(event_status__startswith='1')[:12].count()
    pink_block = int(12)
    event_list = Event.objects.order_by('-event_time')

    context = {
               'event_alert_activate_count': event_alert_activate_count,
               'event_list' : event_list,
               'pink_block' : pink_block
               }

    return render(request, 'dashboard/alert_list.html', context)



def alertDetail(request,pk):
    event = get_object_or_404(Event, pk=pk)
    event_list = Event.objects.order_by('-event_time')[:1]

    context = {'event_list': event_list,
               'event' : event,}
    return render(request, 'dashboard/alert_detail.html', context)



def alertUpdate(request,pk):
    event = get_object_or_404(Event,pk=pk)
    event_list = Event.objects.order_by('-event_time')[:1]
    if request.POST :
        event_status_form = EventStatusForm(request.POST)
        if event_status_form.is_valid():
            change_event_status = 0
            event.event_status = change_event_status
            event_status_form.save()
            return HttpResponse('<script type="text/javascript">window.parent.location.href = "/";')
    else :
        form = EventStatusForm(request.POST)
    context = {'event_list': event_list,
               'event' : event,
               'form' : form,}
    return HttpResponse('<script type="text/javascript">window.parent.location.href = "/";')
<model.py>

class Event(models.Model):
    member_id = models.ForeignKey(Member, on_delete=models.CASCADE, db_column = 'member_id')
    event_type = models.IntegerField(default=0)
    room_name = models.CharField(max_length=20)
    heart_rate = models.IntegerField(default=0)
    breath_rate = models.IntegerField(default=0)
    event_status = models.IntegerField(default=0)
    event_time = models.DateTimeField(auto_now_add=True, blank=True)

    def __str__(self):
        return str(self.id)
<forms.py>
class EventStatusForm(forms.Form):

    class Meta:
        model = Event
        fields=('event_status',)

【问题讨论】:

    标签: python django django-views django-forms


    【解决方案1】:

    有多种方法可以处理这个问题。

    1. 在您的详细信息视图中使用带有隐藏字段的表单,并为您的 html 中的确认按钮分配提交的角色。提交表单后,在您的详细视图中处理事件值切换并重定向到主页。

    2. 定义另一个视图(例如 set_event)和相应的 url。确认按钮重定向到传递所需参数的新 url。然后在新视图中处理事件切换并重定向到主页。您需要注意新视图中的权限(检查是否允许用户采取行动)。

    3. 使用 AJAX 提交数据并将确认按钮链接到主页。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-10
      • 1970-01-01
      相关资源
      最近更新 更多