我正在尝试使用Django编写表单来上传文件.管理表单工作正常,但问题是,在我单击表单上的提交后,表单丢失了我选择的文件(文件名消失,'选择文件'按钮旁边出现'没有文件选择'),视图不会验证表单,因为文件丢失.我的表单/视图/文件处理程序看起来就像django示例.
class AttachForm(forms.ModelForm):
class Meta:
model = Attachment
exclude = ('insp', 'contributor', 'date')
Run Code Online (Sandbox Code Playgroud)
def handle_uploaded_file(f):
destination = open('some/file/name.txt', 'wb+')
for chunk in f.chunks():
destination.write(chunk)
destination.close()
def attach(request, insp_id):
if request.method == 'POST':
form = AttachForm(request.POST, request.FILES)
if form.is_valid():
handle_uploaded_file(request.FILES['file'])
f = form.save(commit=False)
f.contributor = request.user
f.insp = insp_id
f.save()
return HttpResponseRedirect(server + '/inspections/' + str(insp_id) + '/')
else:
form = AttachForm()
return render_to_response('attach.html', locals(), context_instance=RequestContext(request))
Run Code Online (Sandbox Code Playgroud)
class Attachment(models.Model):
insp = models.ForeignKey(Inspection)
contributor = models.ForeignKey(User, related_name='+')
date …Run Code Online (Sandbox Code Playgroud) 我有这个型号:
class Part(models.Model):
serial_number = models.CharField(max_length=15, null=True, blank=True, validators=[validate_serial], unique=True)
....
Run Code Online (Sandbox Code Playgroud)
serial_number可以为空并且为null,因为所有部件都不一定具有序列号.但是,在存储没有序列号的一个部件后,空白不再是唯一的,我收到此错误:
具有此序列号的部分已存在.
这有解决方法吗?我已经看过这个问题,但我没有一个模型.我要么使用管理员,要么直接在代码中执行.
如果我有10个元素的列表:
>>> l = [1,2,3,4,5,6,7,8,9,0]
Run Code Online (Sandbox Code Playgroud)
为什么l [10]会返回一个IndexError,但是l [-1]会返回0?
>>> l[10]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list index out of range
>>> l[0]
1
>>> l[-1]
0
>>> l[-2]
9
Run Code Online (Sandbox Code Playgroud)
我想要做的是如果列表中没有先前的元素则抛出错误.
我有一个奇怪的问题.有人看到我的代码有什么问题吗?
for x in questions:
forms.append((SectionForm(request.POST, prefix=str(x.id)),x))
print "Appended " + str(x)
for (form, question) in forms:
print "Testing " + str(question)
if form.is_valid():
forms.remove((form,question))
print "Deleted " + str(question)
a = form.save(commit=False)
a.audit = audit
a.save()
else:
flag_error = True
Run Code Online (Sandbox Code Playgroud)
结果是:
Appended Question 50
Appended Question 51
Appended Question 52
Testing Question 50
Deleted Question 50
Testing Question 52
Deleted Question 52
Run Code Online (Sandbox Code Playgroud)
它似乎跳过问题51.它被附加到列表中,但for循环跳过它.有任何想法吗?
在渲染标题时(使用reportlab),如果长度超过45个字符,我想将它分成两行.到目前为止我有这个:
if len(Title) < 45:
drawString(200, 695, Title)
else:
drawString(200, 705, Title[:45])
drawString(200, 685, Title[45:])
Run Code Online (Sandbox Code Playgroud)
这个问题是我只想在自然中断时分割标题,例如空格出现的位置.我该如何完成这项工作?
我使用Django构建了一个内部公司网站.我有一个视图,使用send_mail()函数向网站用户发送电子邮件.
有些用户没有收到来自该网站的电子邮件,我们认为如果他们将Outlook配置为高垃圾邮件保护级别,则该网站的电子邮件会被标记为垃圾邮件.
是否有任何编码技术使从Python发送的电子邮件对Outlook和其他电子邮件客户端合法?