我正在与Django建立个人项目,以培养自己(因为我喜欢Django,但我很想念技能).我有基本要求,我知道Python,如果不是三次,我会仔细阅读两次Django书.
我的目标是创建一个简单的监控服务,使用基于Django的Web界面,允许我检查我的"节点"(服务器)的状态.每个节点都有多个"服务".应用程序检查每个节点的每个服务的可用性.
我的问题是我不知道如何在我的数据库中表示不同类型的服务.我想到了两个"解决方案":
这是我的models.py文件的简短摘录:(我删除了与此问题无关的所有内容)
from django.db import models
# Create your models here.
class service(models.Model):
port = models.PositiveIntegerField()
class Meta:
abstract = True
class sshService(service):
username = models.CharField(max_length=64)
pkey = models.TextField()
class telnetService(service):
username = models.CharField(max_length=64)
password = models.CharField(max_length=64)
class genericTcpService(service):
pass
class genericUdpService(service):
pass
class node(models.Model):
name = models.CharField(max_length=64)
# various fields
services = models.ManyToManyField(service)
Run Code Online (Sandbox Code Playgroud)
当然,与ManyToManyField的界限是虚假的.我不知道该替代"*服务".我老老实实地寻找有关此问题的解决方案,我听说过"通用关系",三联表,但我并不真正了解这些事情.
而且,英语不是我的母语,所以进入数据库结构和语义,我对所读内容的知识和理解是有限的(但那是我的问题)
我正在寻找一种从Django应用程序Model
结构生成UML图的方法.
Epydoc不能与Django模型一起使用,因为它需要导入django的settings.py并manage.py graph_models
生成不可读的输出,不易解析且难以转换为UML.
是否有任何工具可以做到这一点?
在我正在进行的项目中,我将大量较大的文件分成小块,以便更容易使用.一个具体的例子是在Django中基于函数的视图创建基于类的视图:
# app/views/LoginView.py
class LoginView(View):
...
# urls.py
from app.views import LoginView
urlpatterns = [
# Here, I have to use LoginView twice
url(r'^login', LoginView.LoginView.as_view())
]
Run Code Online (Sandbox Code Playgroud)
在上面,LoginView
当我想调用它时,我必须使用两次,因为导入LoginView
导入模块,而不是模块中的方法,即使它们是相同的名称.理想情况下,我想避免LoginView.LoginView
每次都打电话.
在Javascript中,我可以说export default function my_function() { ... }
没有命名,当它被导入时它是默认的,例如import my_function from './some_module.js';
有没有办法在Python 3中做这样的事情?我不想这样做,from app.views.LoginView import LoginView
因为,特别是在一个大的Django项目和类似的文件中urls.py
,将每个导入都放在一个单独的行上是不可行的.
我正在尝试用C解决矩阵乘法问题.问题中给出的矩阵大小(2x2)我编写了这段代码,但它没有像我期望的那样打印结果.我想我对C的规则缺少一点.
这段代码中我的错误是什么?
#include <stdio.h>
int main() {
int matA[2][2]={0,1,2,3};
int matB[2][2]={0,1,2,3};
int matC[2][2];
int i, j, k;
for (i = 0; i < 2; i++) {
for(j = 0; j < 2; j++) {
for(k = 0; k < 2; k++) {
matC[i][j] += matA[i][k] * matB[k][j];
}
printf("%d\n",matC[i][j]);
}
}
}
Run Code Online (Sandbox Code Playgroud)
打印结果:
2
3
4195350
11
Run Code Online (Sandbox Code Playgroud) 我有一个系统模型和一个接口模型.接口是两个系统之间的组合.之前,此界面表示为Excel工作表(交叉表).现在我想将它存储在数据库中.
我尝试创建一个Interface模型,带有两个外键到System.这不起作用,因为:
我用过这段代码:
class SystemInterface(Interface):
assigned_to = models.ManyToManyField(User)
first_system = models.ForeignKey(System)
second_system = models.ForeignKey(System)
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来做到这一点?
我需要有对称的关系:系统是接口中的"第一"或"第二"应该是无关紧要的.
对于特定需求(django-jqgrid),我定义了一个类(表示一个Grid
),我必须提供一个url
属性.由于我只使用反向URL(没有静态定义),我用reverse_lazy()
这个问题.
只要我不必传递参数,这就行得很好reverse_lazy()
.但是,如果我想Grid
特定于某个对象(这里是a DocumentSet
),那么这个url
参数也需要特定于该对象,因此我需要为reverse_lazy()提供一个参数.
在运行时,我可以访问,DocumentSet
因为我将它定义为对象的属性,并且我确保调用的第一个函数Grid
将此对象作为参数,并正确设置属性.
我尝试使用此代码:
class DocumentGrid(JqGrid):
documentset = None
model = Document
url = reverse_lazy('document-grid-handler', kwargs = {'pk' : documentset.id, })
def get_queryset(self, request):
return self.documentset.documents
def get_json(self, request, documentset):
self.documentset = documentset
return super(DocumentGrid, self).get_json(request)
Run Code Online (Sandbox Code Playgroud)
但是当然,导入文件时会失败,因为NoneType object has no attribute 'id'
.
所以我尝试使用django.utils.functional.lazy()
,通过将这个琐碎和愚蠢的函数添加到我的模型:
def get_id(self):
return self.id
Run Code Online (Sandbox Code Playgroud)
并通过使用此代码:
class DocumentGrid(JqGrid):
documentset = …
Run Code Online (Sandbox Code Playgroud) 我想知道关于django-mptt的事情,因为我正在考虑将它用于工程协调项目.
我会有一个Model类(比如说'Interface'),在Tree中有一个到Model的ForeignKey(比如'Location').
我能否按照他们所指的位置深度过滤接口?深度是父母的数量.
我还不知道如何组织我的数据,这就是我要问的原因.我正在考虑使用django-mptt(与在部署时由循环创建的模型相对,每个模型对应一个树级别),但我害怕它会阻止我的某个点并迫使我审查我的整个项目.
我想找到使用Python 3出现在字符串中的第一个浮点数.
我查看了其他类似的问题,但我无法理解它们,当我尝试实施它们时,它们不适合我的情况.
一个示例字符串
I would like 1.5 cookies please
django ×6
python ×6
c ×1
django-mptt ×1
django-orm ×1
django-urls ×1
math ×1
matrix ×1
model ×1
mptt ×1
python-3.5 ×1
python-3.x ×1
uml ×1