好吧,我已经尝试了几乎所有的东西,我无法让它工作.
我已经用6种不同的方式编写了这段代码.
我遇到的问题是我写的所有代码都会导致以下行为:(1)Django将生成第二个文件,(2)重命名新文件,在文件末尾添加_ name,然后(3)不传输任何数据,基本上是一个空的重命名文件.'upload_to'路径中剩下的是2个文件,一个是实际图像,一个是图像的名称,但是是空的,当然ImageField路径设置为Django尝试创建的空文件.
如果不清楚,我会试着说明:
## Image generation code runs....
/Upload
generated_image.jpg 4kb
## Attempt to set the ImageField path...
/Upload
generated_image.jpg 4kb
generated_image_.jpg 0kb
ImageField.Path = /Upload/generated_image_.jpg
Run Code Online (Sandbox Code Playgroud)
如果Django没有尝试重新存储文件,我怎么能这样做呢?我真正喜欢的是这个效果......
model.ImageField.path = generated_image_path
Run Code Online (Sandbox Code Playgroud)
......但当然这不起作用.
是的,我已经经历这里的其他问题,如走了这一个,以及对Django的DOC 文件
更新 进一步测试后,它只在Windows Server上的Apache下运行时才会出现此问题.在XP上的"runserver"下运行时,它不会执行此行为.
我很难过.
这是在XP上成功运行的代码...
f = open(thumb_path, 'r')
model.thumbnail = File(f)
model.save()
Run Code Online (Sandbox Code Playgroud) 我有这样的情况......
class Outer(object):
def some_method(self):
# do something
class Inner(object):
def __init__(self):
self.Outer.some_method() # <-- this is the line in question
Run Code Online (Sandbox Code Playgroud)
如何Outer
从Inner
类中访问类的方法?
编辑 - 感谢您的回复.我的结论是,我需要重新评估我是如何设计这个实现的,并提出一个更强大的方法.
目标: 通过加载HTML内容$.ajax
,将其插入DOM,让jQuery Mobile应用主题样式.
问题: 内容被插入但缺少jQuery Mobile主题.
码:
$.ajax({
...
success: function(html) {
$('#container').append(html);
$('#page').page('refresh', true);
}
});
Run Code Online (Sandbox Code Playgroud)
返回的HTML包含data-role
jQM应该样式的标签......
<a data-role="button">Do Something</a>
Run Code Online (Sandbox Code Playgroud)
我没有应用它应该的样式,而是出现以下错误:
未捕获的异常:没有这样的方法'刷新'页面小部件实例
以上代码测试使用 http://code.jquery.com/mobile/latest/jquery.mobile.js
类似的问题让我收到上述错误信息:
我有一个Django webapp,它既有前端的,可通过Web访问的组件,也有桌面客户端访问的API.但是,现在使用新的CSRF中间件组件,来自桌面客户端的POST请求的API请求将获得403.
我理解为什么会发生这种情况,但在不影响安全性的情况下解决这个问题的正确方法是什么?有没有我可以在HTTP标头中发出信号,它是一个API请求,Django不应该检查CSRF或者这是一个糟糕的策略?
编辑 -
我目前使用的方法是桌面客户端设置标头,X-Requested-With:XMLHttpRequest.这有点像hacky,但我不确定如何更好地处理它.
假设我有一些CSS ......
button:hover { font-weight: bold }
如何防止:hover
样式被随意应用?我的目标用例是禁用该元素.例如,使用此HTML ...
<button disabled>Click me</button>
...... :hover
CSS仍然适用.按钮逐渐消失,但:hover
仍然可以看到效果.怎么能停止?
如何在django Model或AdminModel中的ForeignKey字段上设置默认值?
像这样的东西(但当然这不起作用)......
created_by = models.ForeignKey(User, default=request.user)
Run Code Online (Sandbox Code Playgroud)
我知道我可以在视图中"欺骗"它,但就AdminModel而言,似乎不可能.
我正在使用Django信号,但它们似乎被接收了两次,即使发出一次.这是我正在使用的代码(它是一个使用上传与Django的简单包装器)...
# Signal-emitting code... emits whenever a file upload is received
# ----------------------------------------------------------------
upload_recieved = django.dispatch.Signal(providing_args=['data'])
def upload(request, *args, **kwargs):
if request.method == 'POST':
if request.FILES:
print 'sending signal'
upload_recieved.send(sender='uploadify', data=request.FILES['Filedata'])
return HttpResponse('True')
# Signal-receiving code...
# ----------------------------------------------------------------
def upload_received_handler(sender, data, **kwargs):
print 'upload received handler'
print 'connecting signal'
upload_recieved.connect(upload_received_handler)
Run Code Online (Sandbox Code Playgroud)
(我刚注意到我的信号拼错了)
我确定你注意到那里的印刷声明.在控制台上,这是它显示的内容:
(server starts)
connecting signal
...
sending signal
upload received handler
upload received handler # << == where is this 2nd one coming from?
127.0.0.1 - - [25/Sep/2009 07:28:22] …
Run Code Online (Sandbox Code Playgroud) 我正试图通过Django过渡到测试.这是用于测试的特定模型:
class Media(models.Model):
file = models.FileField(upload_to='upload',)
thumbnail = models.ImageField(upload_to='upload', blank=True,)
# ...
Run Code Online (Sandbox Code Playgroud)
第1部分:我如何处理这些FileFields?(特别是在我需要生成伪条目来测试代码位的意义上)
第2部分:下面是我开始编写的测试代码.我这样做是正确的还是我应该使用"嘲弄"的形式?
from django.test import TestCase
from django.test.client import Client
from django.contrib.auth.models import User
from mediamanager.models import Media
class MediaManagerTestCase(TestCase):
def setUp(self):
self.fake_user = User.objects.create(username='fakeuser', is_staff=false)
self.fake_staff = User.objects.create(username='fakestaff', is_staff=true)
self.fake_admin = User.objects.create(username='fakeadmin', is_superuser=true)
self.fake_media_image = Media.objects.create() # Hmmm...
self.fake_media_video = Media.objects.create() # How do i do this...
def testMediaCanEdit(self):
perm = self.fake_media_image.can_edit(self.fake_user)
self.assertEquals(perm, false)
Run Code Online (Sandbox Code Playgroud) 这是一个最佳实践问题.
在Django中编写测试时,在test.py中硬编码url或使用dispatch的reverse()函数检索正确的url会更好吗?
使用硬编码的网址进行测试只是感觉像是正确的方式,但同时我想不出一个不使用reverse()的足够好的论据.
# Data has already been loaded through a fixture
def test_view_blog(self):
url = reverse('blog', kwargs={'blog_slug':'test-blog'})
response = self.client.get(url)
self.failUnlessEqual(response.status_code, 200)
Run Code Online (Sandbox Code Playgroud)
# Data has already been loaded through a fixture
def test_view_blog(self):
url = '/blog/test-blog/'
response = self.client.get(url)
self.failUnlessEqual(response.status_code, 200)
Run Code Online (Sandbox Code Playgroud) 使用jQuery,我想要执行的操作类似于以下内容:
$('sometag').children().wrap('<div></div>');
Run Code Online (Sandbox Code Playgroud)
由此产生的DOM操作将所有子项包装在一个div中,而不是每个子项单独包装.
启动示例HTML:
<div>
<h3>Heading</h3>
<p>Paragraph</p>
</div>
Run Code Online (Sandbox Code Playgroud)
这行代码的作用是什么:
<div>
<div>
<h3>Heading</h3>
</div>
<div>
<p>Paragraph</p>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
我想要的是:
<div>
<div>
<h3>Heading</h3>
<p>Paragraph</p>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
什么是实现我正在寻找的最终结果的正确语法?