【问题标题】:Django Model LoopDjango 模型循环
【发布时间】:2014-03-10 14:25:20
【问题描述】:

我刚开始使用 Django 进行开发,我正在慢慢坠入爱河。但是,我仍然是一个菜鸟,很难理解为什么这个特定的模型不起作用,所以我在这里。

我在 models.py 中有这个模型:

class projectBuildTests(models.Model):
    project = models.CharField(max_length = 50)
    build = models.CharField(max_length = 10)
    testName = models.CharField(max_length = 50)

我的 view.py 是这样的:

def home(request):
    projects = projectBuildTests.objects.all()
    return render_to_response('testrunner/home.html')

在我的 home.html 中,我试图这样显示:

<label>Project:</label><br>
<select class="project_test_selector" multiple="multiple" size="10">
    {% for project in projects %}
    <option>{{ project.text }}</option>
    {% endfor %}
</select>

我正在使用 django 管理员管理模型数据。它是这样注册的:

admin.site.register(projectBuildTests)

在实际的管理面板中,模型显示有点奇怪。它给了我一堆子对象,而不是我可以附加数据的普通列列表。我不知道我在这里是否有意义:-/

【问题讨论】:

  • 在您的视图函数中,您没有将objects 变量传递给模板,因此它什么也不做。
  • 也作为一个风格指南——python类名不要使用驼峰式大小写projectBuildTests应该是ProjectBuildTests
  • 我会解决的,谢谢 :)

标签: python database django view models


【解决方案1】:

在您的views.py 中,您需要在响应上下文中传递projects 查询集。

from django.template import RequestContext
def home(request):
    extra_context = {}
    projects = projectBuildTests.objects.all()
    extra_context['projects'] = projects
    return render_to_response('testrunner/home.html', extra_context, context_instance=RequestContext(request))

在你的模板中:

<label>Project:</label><br>
<select class="project_test_selector" multiple="multiple" size="10">
    {% for project in projects %}
        <option>{{ project.testName }}</option>
    {% endfor %}
</select>

【讨论】:

  • 这将引发错误,因为未定义 extra_context。
  • :D。忘记初始化字典。已编辑。
  • 我明白了。现在它给了我一个 Nameerror: global name 'extra_context' is not defined
  • 你可以只使用render,然后你就不必自己摆弄请求上下文了。
【解决方案2】:

编辑一些 Priyank Patel 的回复.. Django shorcuts 非常有用。 例如,您可以导入渲染:

from django.shortcuts import render

然后返回:

return render(request, 'testrunner/home.html', extra_context)

【讨论】:

  • 什么时候这会比普通的渲染响应更有用?或者更确切地说,那里有什么区别?
  • 是一样的。 'render' 只是 render_to_response 的一个快捷方式。
猜你喜欢
  • 2020-08-28
  • 2013-09-28
  • 2019-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-16
相关资源
最近更新 更多