小编Mat*_*ttG的帖子

将 Django 中的列表作为数组获取到 Javascript 中

我有一个由Django 中的views.py 生成的python 列表,我想将其传递给HTML 模板中的javascript。我似乎无法将其作为数组放入 javscript 中...我需要评估列表/数组是否包含某些数字,但它是以字符串的形式出现的。

我将列表传递到我的 HTML 模板,如下所示:

def get_context_data(self, **kwargs):
    context = super(dashboardView, self).get_context_data(**kwargs)
    mylist = [10,22,33,45]
    context['mylist'] = mylist
    return context
Run Code Online (Sandbox Code Playgroud)

当我使用时:

<h1 id = "list"> {{mylist}}</h1>
Run Code Online (Sandbox Code Playgroud)

它在浏览器上显示为 [10,22,33,45]

然后在我的模板中我使用 javascript 我有:

var mylist = document.getElementById("list").innerHTML;
for(i = 0; i < mylist.length; i++){
    console.log(mylist[i])
};
Run Code Online (Sandbox Code Playgroud)

这将返回到控制台:

'
[
1
0
,

2
2
........
Run Code Online (Sandbox Code Playgroud)

我想:

10
22
33
45
Run Code Online (Sandbox Code Playgroud)

我尝试在 python 中转换为 JSON,并在 javascript 中解析它,但似乎无法将此字符串转换为数组,或者不断收到错误。这里有什么最佳方法的想法吗?

javascript python django

19
推荐指数
3
解决办法
2万
查看次数

如何将不同的模型表单添加到 modelformset_factory

关于这些模型:

class Projects(models.Model):
    projectDescription = models.CharField(max_length=50,blank=True,null = True,)
    status = models.IntegerField(choices = Status_CHOICES, default = 4)
    projectOwner = models.ForeignKey(staff, on_delete=models.CASCADE, blank=True,null = True,)

class Updates(models.Model):
    project = models.ForeignKey(Projects, on_delete=models.CASCADE)
    update = models.CharField(max_length=50,blank=True,null = True,)
    updateDate = models.DateTimeField(default = timezone.now, editable = False)
    addedBy = models.CharField(max_length=35,blank=True,)
Run Code Online (Sandbox Code Playgroud)

我想创建一个视图来显示所有当前项目的表单。这很容易使用modelformset_factory. 但是我怎样才能为这些项目表单实例中的每一个添加一个附加表单,以便可以对项目(外键)进行更新?理想情况下,用户对各种项目进行更改,为一个或多个项目添加更新,然后提交表单以保存所有更改。我在下面的内容似乎非常接近,但它正在保存对每个项目的更新,其中包含我在最后一个表单中输入的任何内容的值。这似乎是因为形式不是唯一的。我走上了使用前缀的道路,这似乎也无济于事。帮助!

更新表格

class updateForm(ModelForm):
    def __init__(self, *args, **kwargs):
        super(updateForm, self).__init__(*args, **kwargs)
    class Meta:
        model = Updates
        fields = ('update',)
Run Code Online (Sandbox Code Playgroud)

看法:

def MDSprojects(request):
    projects = Projects.objects.filter(dept = 'Assistive Technology') …
Run Code Online (Sandbox Code Playgroud)

python django django-forms django-views

7
推荐指数
1
解决办法
556
查看次数

制作时间增量字符串的有效方法?

我想创建一个时隙列表(作为字符串)。使用 python 执行此操作的最有效方法是什么?

此列表将从上午 8:00 到晚上 10 点以 15 分钟为增量。我想要一个格式如下的列表:

['8:00am - 8:15am', '8:15am - 8:30am', '8:30am - 8:45am',.......] 
Run Code Online (Sandbox Code Playgroud)

我尝试使用for嵌套在一起的几个循环,直到它变得非常复杂,而且我知道必须有一种更好的、更 Pythonic 的方式来做这样的事情。

谁有想法?

python

7
推荐指数
2
解决办法
203
查看次数

如何使用 Python 和/或 Javascript 自动验证 ngrok 密码?

我正在使用 ngrok 在树莓派上公开我的本地主机,并且 ngrok 受密码保护。我在网络之外的另一台计算机上使用 Django 来访问此树莓派上的网页(简单服务器)。我不想手动输入 ngrok 的用户名和密码。

如何自动填写 ngrok 用户/密码,这是 chrome 中的一个弹出窗口,要求输入用户名和密码?

我尝试过的:我首先尝试在我的模板中使用 JS,只是使用 fetch 请求: https://user:password@myngrokdomain.ngrok.io但是 chrome 在控制台中抛出一个错误,说我无法像这样以纯文本形式传递凭据,理所当然......

然后我尝试使用 python requests:

    UN= "myuser"
    PWD = "mypassword"
    loginURL = "https://myngrokdomain.ngrok.io"
    client = requests.session()
    login_data = dict(username=UN, password=PWD,)
    r = client.post(loginURL, data=login_data)
Run Code Online (Sandbox Code Playgroud)

这返回了 401 访问被拒绝

r.headers + r.reason返回: 401 Unauthorized Unauthorized {'Content-Length': '16', 'Content-Type': 'text/plain', 'Www-Authenticate': 'Basic realm="ngrok"', 'Date': 'Tue, 16 Mar 2021 15:22:15 GMT'}

javascript python django ngrok

6
推荐指数
1
解决办法
2952
查看次数

JavaScript Promise 与 AJAX

我正在尝试将一系列 AJAX 请求写入字典。我正在尝试为此使用承诺,但是我要么错误地编写了承诺语法,要么我认为可能发生的是该函数实际上正在完成(for 循环已完成,并且 AJAX 请求已发送)但 AJAX 请求仍在没有回来。因此,这仍然返回一个空字典。

let dict = {};
let activeMachines = ["41", "42", "43"];
let dataPromise = new Promise (function (resolve, reject)
{
 for (let i = 0; i < activeMachines.length; i++)
 {
  let machineID = activeMachines[i]
  let getAPIData = new XMLHttpRequest();
  let url = 'http://127.0.0.1:8000/processes/apidata/' +machineID + '/';
  getAPIData.open('GET', url);
  getAPIData.send();
  getAPIData.onload = function()
  {
   let APIData = JSON.parse(getAPIData.responseText);
   dict['machine_' + machineID] = APIData[0].author_id;
   dict['temp' + machineID] = APIData[0].tempData; //get value
   dict['humid' + machineID] = …
Run Code Online (Sandbox Code Playgroud)

javascript ajax

5
推荐指数
1
解决办法
1万
查看次数

什么是 NGINX [notice] 信号进程启动错误消息

nginx错误日志是什么2020/10/23 06:51:45 [notice] 361#361: signal process started意思?

更多背景信息:

我有一些树莓派与运行 nginx 作为 Web 服务器的数字海洋 Ubuntu Droplet 上的 Django 应用程序进行通信。这些树莓派停止与我的服务器通信,并且它们在物理上离我很远。我可以看到他们与我的服务器的最后一次通信是在 2020/10/23 06:51:41 然后他们停止了(在记录 nginx 错误消息之前的几秒)。有权访问 pi 的用户说他们没有断电,互联网正在工作,所以他们重新启动了,但仍然没有任何反应。

我尝试过: sudo systemctl restart nginx其次是sudo systemctl restart gunicorn

这并没有解决问题。我似乎找不到有关此错误的文档

nginx

5
推荐指数
1
解决办法
9051
查看次数

如何使用 django 通道管理 cpu 和内存

有没有办法通过 django 通道更好地管理 cpu 和内存使用情况?我试图通过 websockets 非常快速地传输数据,这种方法运行良好,直到我的 ubuntu 服务器 cpu 达到 100%,内存达到 90%,然后 daphne 崩溃。我使用 NGINX 和 Daphne 作为服务器/代理。

有没有更好的方法来设置redis?或者可能是“清除缓存”或类似的方法?

我的设置是:

设置.py

CHANNEL_LAYERS = {
    "default": {
        "BACKEND": "channels_redis.core.RedisChannelLayer",
        "CONFIG": {
            "hosts": [("localhost", 6379)],
            "capacity": 5000,
            "expiry": 5,
        },
    },
}
Run Code Online (Sandbox Code Playgroud)

阿斯吉

application = ProtocolTypeRouter({
    # Django's ASGI application to handle traditional HTTP requests
    "http": django_asgi_app,

    # WebSocket chat handler
    "websocket": AuthMiddlewareStack(
        URLRouter([
            url(r"^stream/(?P<device_id>[\d\-]+)/$", StreamConsumer.as_asgi()),
            url(r"^status/(?P<device_id>[\d\-]+)/$", StatusConsumer.as_asgi())
        ])
    ),
})
Run Code Online (Sandbox Code Playgroud)

消费者.py

class StreamConsumer(AsyncWebsocketConsumer):
    async def connect(self):
        self.room_name = self.scope['url_route']['kwargs']['device_id']
        self.room_group_name …
Run Code Online (Sandbox Code Playgroud)

python django websocket django-channels

5
推荐指数
0
解决办法
1090
查看次数

如何使用 JavaScript 包含 Django 静态 URL?

我有一个 Django 应用程序,用于在数字海洋空间存储静态图像。通过执行以下操作,我可以轻松地在模板中显示这些静态图像:<img>{% static 'images/my_image.png' %}</img>

如果我在加载后检查 HTML 页面,我会看到如下内容:

https://nyc3.digitaloceanspaces.com/nameofmyspace/nameofmyspace-space-static_DEV/images/my_image.png?AWSAccessKeyId=XXXXXXXXXXXXXX&Signature=XXXXXXXXXXXXXXXXXX%3D&Expires=1621600823

但现在我想使用 javascript 动态更改此图像。

所以我试过:

document.getElementById(id+"dynamicImage").src = "{% static 'images/my_image_2.png' %}";

这几乎有效,但图像无法加载。原因是在检查src了 javascript 提供的内容之后:

https://nyc3.digitaloceanspaces.com/nameofmyspace/nameofmyspace-space-static_DEV/images/my_image.png?AWSAccessKeyId=XXXXXXXXXXXXXX&amp;Signature=XXXXXXXXXXXXXXXXXX%3D&amp;Expires=1621600823

你可以看到任何&附加amp;了它的地方。这样做的正确方法是什么?

我可以想到 2 种方法来纠正这个问题,但它们看起来很笨拙。

  1. 我可以将 URL 硬编码到 javascript 中,随着事情的变化,这将是一个更新的噩梦
  2. 我可以<img id = 'my_image' hidden >{% static 'images/my_image.png' %}</img>对我计划使用的所有链接进行处理,然后在 javascript 中使用let URL = document.getElementById("my_image").innerHTML;. 这将不是一个更新的噩梦,但看起来很笨拙,必须是一个更好的方法。

html javascript django digital-ocean

5
推荐指数
1
解决办法
165
查看次数

如何使用变量访问字典值:Javascript

如何使用 for 循环和数组访问字典值?

例如:我有一本字典:

var dict = {
    machine_41: {
        temp: "14",
        humidity: "89",
        time: Wed Oct 31 2018 12: 27: 16 GMT - 0500(Central Daylight Time)
    },
    machine_42: {
        temp: "20",
        humidity: "13",
        time: Wed Oct 31 2018 12: 27: 41 GMT - 0500(Central Daylight Time)
    },
    machine_43: {
        temp: "34",
        humidity: "36",
        time: Wed Oct 31 2018 1 GMT - 0500(Central Daylight Time)
    }
Run Code Online (Sandbox Code Playgroud)

我知道我可以通过使用访问值console.log(dict.machine_41.temp) 但是,如何使用 for 循环和数组来执行此操作?

我努力了:

      let activeMachines = [41,43,45];
      for(let i = 0; …
Run Code Online (Sandbox Code Playgroud)

javascript

4
推荐指数
1
解决办法
5万
查看次数

找不到与Django == 2.2匹配的分布

我正在使用Django 2.0版开发的数字海洋飞沫服务器上部署django应用程序。使用Putty SSH进入我的ubuntu服务器,我尝试使用进行升级pip install Django==2.2。我收到以下错误消息:

  Could not find a version that satisfies the requirement Django==2.2 (from 
  versions: 1.1.3, 1.1.4, 1.2, 1.2.1, 1.2.2, 1.2.3, 1.2.4, 1.2.5, 1.2.6, 
  1.2.7, 1.3, 1.3.1, 1.3.2, 1.3.3, 1.3.4, 1.3.5, 1.3.6, 1.3.7, 1.4, 1.4.1, 
  1.4.2, 1.4.3, 1.4.4, 1.4.5, 1.4.6, 1.4.7, 1.4.8, 1.4.9, 1.4.10, 1.4.11, 
  1.4.12, 1.4.13, 1.4.14, 1.4.15, 1.4.16, 1.4.17, 1.4.18, 1.4.19, 1.4.20, 
  1.4.21, 1.4.22, 1.5, 1.5.1, 1.5.2, 1.5.3, 1.5.4, 1.5.5, 1.5.6, 1.5.7, 
  1.5.8, 1.5.9, 1.5.10, 1.5.11, 1.5.12, 1.6, 1.6.1, 1.6.2, 1.6.3, 1.6.4, 
  1.6.5, 1.6.6, …
Run Code Online (Sandbox Code Playgroud)

python django ubuntu digital-ocean

4
推荐指数
1
解决办法
2252
查看次数