我不确定这是否真的很简单,我只是在文档中浏览它,或者如果这是Django模板系统的限制,但我需要能够在Django中做一些(不是非常)高级逻辑而且我宁愿不必重复自己.
假设我有3个布尔值; A,B和C.
我基本上需要这样做:
{% if A and (B or C) %}
{{ do stuff }}
{% endif %}
Run Code Online (Sandbox Code Playgroud)
但是,Django似乎不允许(B or C)用括号对逻辑进行分组.有没有办法在Django的模板语言中进行这种分组?或者我需要做那个的非DRY版本,这将是:
{% if A and B %}
{{ do stuff }}
{% else %}
{% if A and C %}
{{ do the same stuff }}
{% endif %}
{% endif %}
Run Code Online (Sandbox Code Playgroud) 我正在研究一个Django项目有些麻烦.我现在有两个应用程序,需要相当多的重叠.我真的只开始了第二个项目(叫做workflow),我正在尝试为该应用程序创建我的第一个表单.我的第一个应用程序叫做po.在workflow应用程序中,我有一个被调用的类WorkflowObject,它(现在)只有一个属性 - a的外键PurchaseOrder,在中定义po/models.py.我已经导入了这个类from po.models import PurchaseOrder.
我要做的是拥有一个用户创建新页面的页面PurchaseOrder.这工作正常(它与我在我的PurchaseOrder应用程序中使用的形式相同),然后使用该类的实例来创建WorkflowObject.现在的问题是,我得到了错误:ValueError: Cannot create form field for 'purchase' yet, because its related model 'PurchaseOrder' has not been loaded yet.我真的不知道从哪里开始.它工作正常(允许我创建一个新的PurchaseOrder并转发到url,其主键在url中),直到我添加了应该允许我创建一个新的视图WorkflowObject.我将把这个具体观点放在这里:
from django.http import HttpResponse, HttpResponseRedirect
from django.shortcuts import render, get_object_or_404
from django_tables2 import RequestConfig
from po.models import PurchaseOrderForm, PurchaseOrder
from workflow.models import POObject, WorkflowForm
def new2(request, number):
po=PurcchaseOrder.objects.get(pk=number)
if request.method …Run Code Online (Sandbox Code Playgroud) 我有一个包含许多字段的Django模型(大约24个),显然我的用户希望能够使用电子表格上传创建此对象的实例,而不是手动将所有数据输入表单.
我发现使用python的内置CSV模块应该会使这个变得相当简单,但是我很难弄清楚如何使用它.
让我们从代码方面开始:
def upload_file(request):
if request.method == "POST":
form = UploadFileForm(request.POST, request.FILES)
if form.is_valid():
handle_files(request.FILES['file'])
return HttpResponseRedirect('/workflow/')
else:
print form.errors
print request.FILES
return HttpResponseRedirect('/workflow/upload')
else:
form = UploadFileForm()
return render(request, 'fileform.html', {'formset': form})
Run Code Online (Sandbox Code Playgroud)
这接受CSV文件作为上传,并将其handle_files交给处理解析和对象创建.这是我遇到麻烦的方法.
def handle_files(f):
reader = csv.DictReader(f, delimiter=' ', quotechar='|')
... #?
Run Code Online (Sandbox Code Playgroud)
我一直试图模仿python文档(http://docs.python.org/2/library/csv.html),但DictReader的文档记录非常糟糕.我提供csv.DictReader()了适当的论据吗?如果有,我如何获取信息reader?我将为用户提供模板,因此我可以假设CSV文件的每一列都有可预测的数据.也就是说,我知道列A将具有与字段X对应的数据,而列B对应于Y等.如何从读取器解析数据,然后使用该数据创建对象?
我猜它会是这样的:
for row in reader:
X=row[1]
Y=row[2]
#etc
my_object = MyObject(x=X, y=Y)
my_object.save()
Run Code Online (Sandbox Code Playgroud)
这样离开了吗?我应该使用其他类型的CSV阅读器吗?
感谢您的帮助,我知道这篇文章中有很多问题.
我正在Django中创建一个表单(使用ModelForm).有许多复选框,我想这样做,以便必须选择其中一个以提交表单.我不是指任何一个复选框,而是一个特定的框.我在Django文档中找不到任何内容.任何帮助,将不胜感激.
我想在<li>元素悬停时更改链接的文本颜色.现在我有
#nav li a:hover {
margin-left: -10px;
padding-left: 10px;
background-color: #13118C;
color: white;
font-weight: bold;
width: 100%;
}
#nav ul li:hover {
margin-left: -10px;
padding-left: 10px;
background-color: #13118C;
color: white;
font-weight: bold;
width: 100%;
}
Run Code Online (Sandbox Code Playgroud)
但是,这只会在链接本身悬停时更改文本颜色.如果鼠标位于链接的右侧,则背景会更改,但文本不会.我喜欢它,以便链接右侧的鼠标在功能上与链接本身相同.有没有办法在背景时改变文本颜色?