Django中的多个待办事项列表

时间:2019-06-14 23:59:00

标签: django

我目前正在学习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,也希望在这方面的任何帮助。

2 个答案:

答案 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>

我尚未对此进行测试,因此某个地方可能存在错误,但希望这会引导您走上正确的道路。