我正在为我的应用程序使用500.html模板,这是404.html的相同副本,其中包含一些小的文本更改.
有趣的是,如果提供500.html(例如,当我强制内部服务器出错时),服务器将无法解析{{media_url}}上下文变量,从而导致页面没有加载任何css.
避免这种情况的一种简单方法是将链接硬编码到css,但我只是好奇为什么media_url没有得到解决.可能是因为服务器遇到内部服务器错误,导致上下文变量不再可用!?
我想知道为什么这个代码部分打印出以下内容:
print "request.user.has_perm('bug_tracking.is_developer'): " + str(request.user.has_perm('bug_tracking.is_developer'))
print request.user.get_all_permissions()
request.user.has_perm('bug_tracking.is_developer'): True
set([])
Run Code Online (Sandbox Code Playgroud)
如果所有权限列表都为空,我希望request.user.has_perm('bug_tracking.is_developer')返回false!
我想创建一个表单,其中包含所有用户的下拉列表.我这样试过,没有运气.
class ContactFilterByClassificationForm(forms.Form):
kam = forms.ChoiceField(choices=User.objects.all())
Run Code Online (Sandbox Code Playgroud) 我想通过相关字段对联系人的QuerySet进行排序.但是我不知道怎么做.我试过这样,但它不起作用.
foundContacts.order_by("classification.kam")
Run Code Online (Sandbox Code Playgroud)
实际上在模板中我可以通过contact.classification.kam访问联系人的kam值,因为它是OneToOne关系.
(简化)模型如下所示:
class Classification(models.Model):
kam = models.ForeignKey(User)
contact = models.OneToOneField(Contact)
class Contact(models.Model):
title = models.ForeignKey(Title, blank=True, null=True)
first_name = models.CharField(max_length=200)
last_name = models.CharField(max_length=200)
Run Code Online (Sandbox Code Playgroud) 我想在HttpResponse中返回一些文件,我正在使用以下函数.返回的文件总是有1kb的文件大小,我不知道为什么.我可以打开文件,但似乎没有正确提供.因此,我想知道如何通过HttpResponse使用django/python返回文件.
@login_required
def serve_upload_files(request, file_url):
import os.path
import mimetypes
mimetypes.init()
try:
file_path = settings.UPLOAD_LOCATION + '/' + file_url
fsock = open(file_path,"r")
#file = fsock.read()
#fsock = open(file_path,"r").read()
file_name = os.path.basename(file_path)
file_size = os.path.getsize(file_path)
print "file size is: " + str(file_size)
mime_type_guess = mimetypes.guess_type(file_name)
if mime_type_guess is not None:
response = HttpResponse(fsock, mimetype=mime_type_guess[0])
response['Content-Disposition'] = 'attachment; filename=' + file_name
except IOError:
response = HttpResponseNotFound()
return response
Run Code Online (Sandbox Code Playgroud)
编辑:这个bug实际上不是一个bug ;-)
此解决方案正在Apache服务器上进行生产,因此源可以.
在写这个问题时,我用django开发服务器在本地测试它,并想知道为什么它不起作用.我的一个朋友告诉我,如果服务器中没有设置mime类型,可能会出现此问题.但他不确定这是不是问题.但有一件事是肯定的..它与服务器有关.
我有一个表单,我想用它来更新MyModel对象.在模型上有一个unique_together约束,fieldA和fieldB.在clean方法的表单中,我检查这个唯一约束.
出于某些原因,我必须在更新中将fieldA显示为只读.因此fieldA不通过.我的问题是如果表单没有验证,表单会重新显示,但我已经丢失了fieldA中的值.
我试图重置cleaning_data ['fieldA'],但它不起作用.知道要改变什么吗?
Forms.py
class MyModelUpdateForm(forms.ModelForm):
class Meta:
model = MyModel
def __init__(self, *args, **kwargs):
super(MyModelUpdateForm, self).__init__(*args, **kwargs)
self.fields['fieldA'].widget.attrs['readonly'] = True
self.fields['fieldA'].widget.attrs['disabled'] = True
def clean(self):
cleaned_data = self.cleaned_data
fieldA= self.instance.fieldA
fieldB = cleaned_data.get("fieldB")
if MyModel.objects.filter(fieldA=fieldA, fieldB=fieldB).count() > 0:
#try to reset fieldA, since it is not passed through, since it is disabled
cleaned_data['fieldA'] = fieldA.pk #does not work
raise forms.ValidationError('some unique validation error')
return cleaned_data
Run Code Online (Sandbox Code Playgroud)
Views.py:
myModelobject = get_object_or_404(MyModel.objects, pk=mymodel_id)
if request.method == 'POST':
model_form = MyModelUpdateForm(request.POST, instance=myModelobject …Run Code Online (Sandbox Code Playgroud) 我想为我的Play应用程序配置PostgreSQL,但是收到以下错误:
! Internal server error, for request [GET /] ->
java.util.concurrent.TimeoutException: Futures timed out after [300000] milliseconds at
akka.dispatch.DefaultPromise.ready(Future.scala:834)
~[akka-actor.jar:2.0] at
akka.dispatch.DefaultPromise.result(Future.scala:838)
~[akka-actor.jar:2.0] at akka.dispatch.Await$.result(Future.scala:74)
~[akka-actor.jar:2.0] at
play.core.ReloadableApplication.get(ApplicationProvider.scala:108)
~[play_2.9.1.jar:2.0] at
play.core.server.Server$class.sendHandler$1(Server.scala:59)
[play_2.9.1.jar:2.0] at
play.core.server.Server$$anonfun$getHandlerFor$4.apply(Server.scala:89)
[play_2.9.1.jar:2.0] [error] application -
! @6a64i2p5o - Internal server error, for request [GET /] ->
play.api.PlayException: Not initialized [?] at
play.api.PlayException$.apply(Exceptions.scala:122)
~[play_2.9.1.jar:2.0] at
play.core.ReloadableApplication.<init>(ApplicationProvider.scala:94)
~[play_2.9.1.jar:2.0] at
play.core.server.NettyServer$$anonfun$mainDev$1.apply(NettyServer.scala:165)
~[play_2.9.1.jar:2.0] at
play.core.server.NettyServer$$anonfun$mainDev$1.apply(NettyServer.scala:164)
~[play_2.9.1.jar:2.0] at
play.utils.Threads$.withContextClassLoader(Threads.scala:17)
~[play_2.9.1.jar:2.0] at
play.core.server.NettyServer$.mainDev(NettyServer.scala:163)
~[play_2.9.1.jar:2.0]
Run Code Online (Sandbox Code Playgroud)
我使用以下配置文件:
application.conf
db.default.url="postgres://play:play@localhost:9000/Play_Playground_DB"
db.default.user=play
db.default.password=play
db.default.driver=org.postgresql.Driver
Run Code Online (Sandbox Code Playgroud)
项目/ Build.scala
val …Run Code Online (Sandbox Code Playgroud) 我在尝试启动Play 2.0应用时遇到了一条未找到密钥的错误消息.我实际上认为我没有改变任何东西,这个错误只是突然出现.其实我做了一件事.我打开文件夹target/scala-2.9.1/src_managed/main中的文件并关闭它(我没有更改任何内容,也没有保存或删除文件).但重新加载应用程序后,我收到此错误.知道我能做什么吗?
[info] play - 在端口9000上侦听HTTP ...
(服务器启动,使用Ctrl + D停止并返回控制台...)
[错误] {文件:/卷/ INPROG/03_Projects/06_Play_Applications /空间换艺术/}空间换艺术/编译:来源:没有找到关键:java.util.NoSuchElementException SOURCE [错误]应用 -
!内部服务器错误,请求[GET /] - >
play.api.UnexpectedException:意外异常[NoSuchElementException异常:键未找到:SOURCE]在sbt.PlayReloader $$匿名$ $$ 2 $ anonfun重载$ $$ 3 $ anonfun 2 $$ anonfun $ $申请11.apply(PlayReloader.scala:228) 〜[NA:NA]在sbt.PlayReloader $$匿名$ $$ 2 $ anonfun重载$ $$ 3 $ anonfun 2 $$ anonfun $ $申请11.apply(PlayReloader.scala:221)〜[NA:NA]在scala.Option.地图(Option.scala:133)〜[阶-library.jar:0.11.2]在sbt.PlayReloader $$匿名$ $$ 2 $ anonfun重载$ $$ 3 $ anonfun 2.适用(PlayReloader.scala:221)〜[呐:在sbt.PlayReloader $$匿名$ $$ 2 $ anonfun重载$ $$ 3 $ anonfun NA 2.适用(PlayReloader.scala:219)〜[NA:NA]在scala.Either $ LeftProjection.map(Either.scala:183 )〜[阶-library.jar:0.11.2] java.util.NoSuchElementException:键未找到:(MapLike.scala SOURCE在scala.collection.MapLike $ class.default:224)〜[阶-library.jar:0.11 .2] …
我想使用angular.js阻止多个表单提交.这个问题与这个问题有关.
当用户点击表单提交按钮时,提交按钮的值/标签应更改为"正在加载...",按钮的状态将设置为禁用,并且应以正常方式触发提交事件,从而导致提交对服务器的调用.这样用户会看到以下效果:
立即:提交按钮值更改为"正在加载..."并被禁用
一旦服务器响应:用户获得服务器请求的结果(而服务器响应在没有角度干预的情况下处理)
我创建了这个插件以显示我的意思.我的问题与这一行有关:elm.attr('disabled',true);.这不仅会禁用该按钮,还会阻止传播提交事件.因此,我得到一个禁用按钮(所需的结果),但表单没有被提交(不希望的结果).
如果您评论/取消注释此行,您可以看到更改的行为: elm.attr('disabled',true);
知道怎么改变这个吗?
是否可以在模型定义中为模型设置自定义窗口小部件?
例如,让模型ModelA引用模型ModelB,我希望ModelA的modelForm使用ModelB定义的自定义窗口小部件自动将引用字段渲染到ModelB.
后面的用例是创建可重用的应用程序,其中可重用的应用程序应该为使用该应用程序的开发人员提供表单字段小部件.
django ×6
django-forms ×2
angularjs ×1
filestream ×1
form-submit ×1
javascript ×1
postgresql ×1
scala ×1
widget ×1