已经询问了这个问题的变化,但是当我的模板被渲染时,我仍然无法正确加载我的样式表.
我正在尝试在开发过程中从Django进程中提供静态媒体 - 这在生产中是非常不鼓励的,我知道.我会发布我的配置和模板,希望有人可以帮我理解我哪里出错了.
请注意,我确实尝试按照Django项目网站上的示例进行操作,但是没有提到如何从模板中引用样式表.我也尝试过同一件事的许多不同变体,所以我的代码/设置可能与描述的有些不同.
settings.py
MEDIA_ROOT = 'D:/Dev Tools/django_projects/dso/media'
MEDIA_URL = '/media/'
ADMIN_MEDIA_PREFIX = '/media/'
Run Code Online (Sandbox Code Playgroud)
urls.py
from django.conf.urls.defaults import *
from django.conf import settings
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
(r'^admin/(.*)', admin.site.root),
(r'^ovramt/$', 'dso.ovramt.views.index'),
)
if settings.DEBUG:
urlpatterns += patterns('',
(r'^media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT}),
)
Run Code Online (Sandbox Code Playgroud)
在我的模板中:
<head>
<title> {% block title %} DSO Template {% endblock %} </title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" >
<link rel="stylesheet" type="text/css" href="../media/styles.css">
</head>
Run Code Online (Sandbox Code Playgroud)
我向你保证,文件(模板/媒体)位于我文件系统的正确目录中.如果我需要提供任何额外信息,请发表评论.
编辑:
我遇到的一个问题是使用'/'前置我的链接.如果前缀为正斜杠,则从站点的根目录打开链接.如果没有正斜杠,则链接在当前级别打开.一个例子:
www.example.com/application/有一个链接"/ app2 /和一个链接"app3
/".app2将在www.example.com/app2/上打开,app3将在www.example.com/application/app3/上打开我觉得这让我感到困惑.
我已经将两个类的公共属性分解为一个抽象基类,但是我有另一个模型需要引用其中一个类.不可能引用ABC,因为它实际上没有数据库表.
以下示例应说明我的问题:
class Answer(models.Model):
ovramt = models.ForeignKey("Ovramt")
question = models.ForeignKey("Question")
answer = models.CharField(max_length=3, choices=(("yes","yes"),("no","no") ("NA","N/A"))
likelihood = models.IntegerField(choices=LIKELY_CHOICES)
consequence = models.IntegerField(choices=CONSEQUENCE_CHOICES)
class Meta:
abstract = True
class Answer_A(Answer):
resident = models.ForeignKey("Resident")
def __unicode__(self):
return u"%s - %s - %s" %(self.ovramt.ssa.name, self.resident, self.question)
class Answer_B(Answer):
def __unicode__(self):
return u"%s - %s" %(self.ovramt.ssa.name, self.question)
class Answer_Risk(models.Model):
answer = models.ForeignKey("Answer")
risk = models.CharField(max_length=200)
def __unicode__(self):
return self.risk
Run Code Online (Sandbox Code Playgroud)
Answer_A和Answer_B略有不同,Answer_A还需要与另一个表的FK关系.Answer_B以后可能还需要一些特定的属性.如果我将Answer_B作为超类 - 并且具有Answer_A子类或组成它,那么问题仍然存在.
无论是Answer_A还是Answer_B,'风险'都是相同的.我还有其他模型需要引用'答案'而不管它的子类型.如何才能做到这一点?无论它的子类型如何,您如何引用类型?
更新:
我试图避免加入操作但我不认为我能够.是否值得在所有'答案'中引用'Resident'并在必要时将其归零?或者这被认为是非常糟糕的做法?
除了在Uni课程中快速介绍之外,我之前没有使用过单元测试.我现在正在编写一个应用程序,并希望在此过程中自学TDD.问题是,我不知道测试什么或者真的如何.
我正在编写一个Django应用程序,到目前为止只创建了模型(并自定义了管理应用程序).这就是我到目前为止编写测试的骨架的方法:
class ModelTests(TestCase):
fixtures = ['initial_data.json',]
def setUp(self):
pass
def testSSA(self):
ssa = SSA.objects.create(name="sdfsdf", cost_center=1111, street_num=8,
street_name="dfsdfsf Street", suburb="sdfsdfsdf",
post_code=3333)
def testResident(self):
pass
def testSSA_Client(self):
pass
Run Code Online (Sandbox Code Playgroud)
我打算编写一个函数来测试ModelTests类中的每个模型.这是编写测试的好方法吗?另外,我到底应该测试什么?创建一个完成所有领域的模型?那个半完整的模型失败了吗?测试任何特殊情况(如null和is_required = False)?我相信ORM,据我所知,它已经过严格测试,所以我不应该测试所有的方法吗?
对于用Django/Python编写的Web应用程序,我需要测试什么?一些例子会很好.
我有一个WPF应用程序,它以一个非常小的窗口开始.在200x100的区域内的东西.当从外部源引发某些事件时,我将控件添加到窗口的ItemsControl区域.items控件当前设置为使用StackPanel PanelTemplate.
我想要的是,当控件添加到itemscontrol时,应用程序窗口会增长.这是可能吗?这背后的想法是始终保持窗口尽可能小.当从itemscontrol中删除控件时,它也应该缩小.
谢谢.
我在php中遇到全局变量问题.我$screen在一个文件中有一个var set,它需要另一个文件来调用另一个文件中initSession()定义的文件.该initSession()声明global $screen,然后进一步处理$屏幕下使用非常的第一个脚本设置的值.
这怎么可能?
为了让事情更加混乱,如果你试图再次设置$ screen然后调用它initSession(),它会再次使用第一次使用的值.以下代码将描述该过程.有人可以解释一下吗?
$screen = "list1.inc"; // From model.php
require "controller.php"; // From model.php
initSession(); // From controller.php
global $screen; // From Include.Session.inc
echo $screen; // prints "list1.inc" // From anywhere
$screen = "delete1.inc"; // From model2.php
require "controller2.php"
initSession();
global $screen;
echo $screen; // prints "list1.inc"
Run Code Online (Sandbox Code Playgroud)
更新:
如果我$screen在要求第二个模型之前再次声明全局,则会为该initSession()方法正确更新$ screen .奇怪.
我想知道什么是"最佳实践",当要求事件处理程序在解雇一次后取消订阅自己的时候.
对于上下文,这是我的情况.用户已登录,并处于就绪状态以处理工作项.他们收到一个工作项目,处理它,然后再回去准备好.在这一点上,他们可能想说他们没有更多的工作项目,但无论如何都要发送给他们.我希望能够做到的是,只要该操作成为可能,就允许用户"排队""我不可用".
public event SomeHandler StateChanged = delegate {};
public void QueueNotAvailable()
{
StateChanged += (s,e) => {
if (e.CanGoNotAvailable) {
someObject.NotAvailable();
StateChanged -= {thishandler};
}
}
}
Run Code Online (Sandbox Code Playgroud)
就我的目的而言,如果一个单独的线程碰巧触发事件并且这个特定的处理程序运行两次,那么这不是问题.要求相同的功能非常接近是可以接受的.我只是不希望每次允许操作都会触发它.
我一直在探索Django的细节大约一周,就像我看到的那样.然而,我对CRUD接口的权限的细粒度控制有一些消极性.
我写的是一个Intranet客户端管理网络应用程序.该组织大约有6层,我需要根据层限制对客户端组的访问.不断扩大.我有一个相当好的想法,我将如何做到这一点,但我不确定我是否能够很好地将它集成到预先构建的管理界面.
我完全没有Django开发,否则我可能会更好地了解这是否有效.如果生成的管理界面对这个项目没用,我可能不会使用Django - 但就像我说的那样,对细粒度的自定义权限有很大的依赖.
Django会让我构建自定义权限/规则并将其无缝集成到管理CRUD界面中吗?
更新一:我想使用管理员应用程序来最小化生成CRUD接口的重复,所以是的,我认为它是必须的.
更新二:
我想描述这个项目所需的权限.
客户可以属于一个或多个"商店".全职员工应该只能在他们的商店编辑客户(即使他们属于另一家商店).但是,他们不应该能够在另一家商店看到/编辑客户.Casuals应该只能根据他们的商店名称来查看客户(或者如果商店用户登录的是休闲商品 - 更有可能).
他们上面的管理人员需要能够看到他们管理的商店的所有员工,仅此而已.
高级管理层应该能够编辑所有员工并授予他们自己以下的权限.
阅读django文档后,它表示您不能(自动)为组的子集设置权限.只有整个团体.为此目的模拟自己的权限是否容易?
的背景
我正在和我的朋友一起构建一个公平的Web应用程序,我们决定在Python上使用Django框架.Django为我们提供了许多我们需要的功能,所以请不要建议其他框架.
我遇到的唯一决定是使用Python还是Jython来开发我们的应用程序.现在我对Java很熟悉,可能会受益于JDK中的库.我知道最小的Python,但是我使用这个项目作为学习新语言的机会 - 所以大多数工作都是用Python编写的.
Jython的吸引力当然是JVM.启用python/django的web主机的数量极少 - 而我假设我可以在各种主机上删除jython/django应用程序.这不是一个大规模的设计决定,但我认为仍然需要决定.我真的更喜欢jython而不是python,仅仅是jvm可访问性.
问题
与常规python相比,Jython有许多限制吗?在jython上运行django会导致问题吗?Jython团队与Python一起发布更新的速度有多快?Django会像Jython上的广告那样工作(预配置非常少)吗?
决策
感谢您提供的有用评论.我认为我要做的是在Jython中开发JVM支持 - 但是尝试只使用Python代码/库.可移植性不是主要问题因此,如果我需要JDK中的库(python中不易提供),我将使用它.只要Django得到全面支持,我很高兴.
我知道os.listdir,但据我所知,它将目录中的所有文件名都存入内存,然后返回列表.我想要的是一种产生文件名,处理它,然后产生下一个文件名的方法,而不是将它们全部读入内存.
有没有办法做到这一点?我担心文件名更改,添加新文件以及使用此类方法删除文件的情况.一些迭代器阻止您在迭代期间修改集合,主要是通过在开始时获取集合状态的快照,并在每个move操作上比较该状态.如果有一个迭代器能够从路径中产生文件名,那么如果有文件系统更改(添加,删除,重命名迭代目录中的文件)修改集合会引发错误吗?
可能有一些情况可能导致迭代器失败,这一切都取决于迭代器如何维持状态.使用S.Lotts示例:
filea.txt
fileb.txt
filec.txt
Run Code Online (Sandbox Code Playgroud)
迭代器产量filea.txt.期间processing,filea.txt被重命名为filey.txt和fileb.txt被重命名为filez.txt.当迭代器试图获取下一个文件时,如果要使用文件名filea.txt找到它的当前位置以便找到下一个文件filea.txt而不存在,会发生什么?它可能无法恢复它在集合中的位置.类似地,如果迭代器fileb.txt在屈服时要获取filea.txt,它可能会查找fileb.txt,失败并产生错误的位置.
如果迭代器能够以某种方式维护索引dir.get_file(0),那么维护位置状态不会受到影响,但是一些文件可能会被遗漏,因为它们的索引可以被移动到迭代器"后面"的索引.
这当然是理论上的,因为似乎没有内置(python)方法迭代目录中的文件.但是,下面有一些很好的答案可以通过使用队列和通知来解决问题.
编辑:
关注的操作系统是Redhat.我的用例是这样的:
进程A不断将文件写入存储位置.进程B(我正在写的那个)将迭代这些文件,根据文件名进行一些处理,并将文件移动到另一个位置.
编辑:
有效的定义:
形容词1.良好的基础或合理的,相关的.
(对不起S.Lott,我无法抗拒).
我已经编辑了上面的段落.