我目前正在学习Django,作为一个入门项目,我想到了一个Todo List网站。
我需要帮助安排视图以在一个视图中显示多个待办事项列表 “ title”:“ text”有点方式。 例如:“ 6月待办事项”:“ 1.Learn Django”,“ 2.Create a Django App”等
到目前为止,这是我所做的:
todo.html HTML:
<h1>Todo List!</h1>
<ul>
{% for todo in all_items %}
<li><a href="/todos/{{todo.id}}">{{todo.title}}</a>: {{todo.text}}</li>
{% endfor %}
</ul>
<form action="/addTodo/" method="POST">{% csrf_token %}
<h3>Create New Todo List</h3>
<input type="text" name="text", placeholder="Enter Title Here">
<input type="Submit" name="Create">
</form>
models.py:
class SimpleTodo(models.Model):
title = models.CharField(max_length = 100)
text = models.CharField(max_length = 100)
def __str__(self):
return (self.title)
views.py:
def TodoView(request):
all_items = SimpleTodo.objects.all()
return render(request, 'blog/todo.html', {'all_items':all_items})
当前输出:
Todo List!
- June: Todo List #1
- June: My first todo
- June: My second todo
- Aug: My First todo Aug
预期输出:
Todo List!
- June:
Todo List
1 My first todo
My second todo
- Aug:
My First todo Aug
PS:目标是创建一个网站,以便人们可以在公共新闻源上共享他们的Todols,也希望在这方面的任何帮助。
答案 0 :(得分:0)
有一本书叫Test Driven Development with Pytho n就是这样做的。它显示了使用Django进行测试驱动的开发,示例项目是一个待办事项。更好的是,您可以免费在线阅读它并询问作者问题,而且他在大多数情况下都可以很快做出答复。
有很多东西要学习!
答案 1 :(得分:0)
如果需要层次结构,可以将模型分成两个这样(我省去了 str 方法以节省空间。
class SimpleTodo(models.Model):
title = models.CharField(max_length = 100)
Class TodoText(models.Model):
title = models.ForeignKey(SimpleTodo)
text = models.CharField(max_length = 100)
我认为您的观点不必改变。您需要更改模板以嵌套类似这样的循环。
<h1>Todo List!</h1>
<ul>
{% for todo in all_items %}
<li><a href="/todos/{{todo.id}}">{{todo.title}}</a></li>
<ul>
{% for text in todo.TodoText.all %}
<li>{{text.text}}</li>
{% endfor %}
</ul>
{% endfor %}
</ul>
我尚未对此进行测试,因此某个地方可能存在错误,但希望这会引导您走上正确的道路。