小编Dan*_*hal的帖子

高级Django模板逻辑

我不确定这是否真的很简单,我只是在文档中浏览它,或者如果这是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 logic templates boolean django-templates

16
推荐指数
2
解决办法
1万
查看次数

Django:ValueError:无法创建表单字段,因为尚未加载其相关模型

我正在研究一个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)

python forms django

7
推荐指数
1
解决办法
5997
查看次数

使用Django和csv.DictReader解析CSV

我有一个包含许多字段的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阅读器吗?

感谢您的帮助,我知道这篇文章中有很多问题.

python csv django parsing

7
推荐指数
1
解决办法
1万
查看次数

Django:要求勾选复选框以提交表格

我正在Django中创建一个表单(使用ModelForm).有许多复选框,我想这样做,以便必须选择其中一个以提交表单.我不是指任何一个复选框,而是一个特定的框.我在Django文档中找不到任何内容.任何帮助,将不胜感激.

python forms django checkbox widget

5
推荐指数
1
解决办法
4644
查看次数

悬停在li上时更改文本颜色

我想在<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)

但是,这只会在链接本身悬停时更改文本颜色.如果鼠标位于链接的右侧,则背景会更改,但文本不会.我喜欢它,以便链接右侧的鼠标在功能上与链接本身相同.有没有办法在背景时改变文本颜色?

html css html-lists

1
推荐指数
2
解决办法
6319
查看次数