Не влияет на глобальную переменную - PullRequest
2 голосов
/ 06 мая 2019

У меня проблема с моим кодом.Я создаю небольшое веб-приложение и хочу получить значение, введенное на html-странице.Поэтому я использую формы.Я восстанавливаю свою ценность в сообщении.Я импортировал другой файл Python «thread.py», который содержит функцию receive () для назначения его глобальной переменной «var_maman», инициализированной в начале 0. Когда я запускаю приложение DJango, а затем запускаю свою программу thread.py (онапостоянно отображает глобальную переменную), и я ввожу значение на своем сайте, глобальная переменная не меняется, я не знаю, что делать дальше.Спасибо за помощь!

view.py

from __future__ import unicode_literals
from django.shortcuts import render,redirect
from django.http import HttpResponse, Http404
import sql
import thread
from .forms import ContactForm
# Create your views here.


def RPI(request,rpi_id):
    if int(rpi_id) > 10:
        return redirect("/page/accueil/")
    Pactive = sql.run("Pactive")
    Preactive = sql.run("Qreactive")
    Courant = sql.run("I")
    form = ContactForm(request.POST or None)
    if form.is_valid(): 
        message = form.cleaned_data['message']
        thread.reception(message)
        print("Le message est : RPI"+rpi_id+","+message)
        envoi = True

    return render(request, 'page/RPI.html',locals())

thread.py


import sys
import time
global var_maman

def reception(message):
    global var_maman
    print("entre dans reception")
    var_maman = message

if __name__ == '__main__':
    global var_maman
    var_maman=0

    while True :
        print var_maman
        time.sleep(1)

1 Ответ

1 голос
/ 06 мая 2019

Вы можете использовать фактическую многопоточность для своей функции печати, вызывая ее из вашего view.py.

import threading
import time

def reception(message):
    while True :
        print message
        time.sleep(1)

Затем вы можете запустить нить из вашего представления RPI:

reception_thread = threading.Thread(target=reception, args=(message,))
reception_thread.start()
...