2012-04-20 78 views
1

我正在創建一個非常簡單的待辦事項列表應用程序。每個用戶都應該有一個關聯的待辦事項列表頁面,其中包含基本的CRUD功能。這意味着用戶A應該有不同於用戶B的數據。Django用戶驗證和渲染由該特定用戶創建的內容?

截至目前,關於誰擁有待辦事項清單並無區別。任何登錄的人都可以添加,刪除,顯示,刪除任務。

我有一種直覺,我可能需要額外的東西在我的模型和我的模板。我應該提到我使用Pinax 0.9a2。如果它符合我的需求,我寧願使用該解決方案。

這裏是我的models.py

class Task(models.Model): 
    name = models.CharField(max_length=100) 
    added_at = models.DateTimeField(auto_now_add=True) 
    last_update = models.DateTimeField(auto_now=True) 

    def __unicode__(self): 
     return self.name 

這裏是我的一種形式在views.py

def task_create(request): 
    return create_object(request, 
     model=Task, 
     template_name='task_create.html', 
     post_save_redirect=reverse("todo_list") 
    ) 

這裏是我的模板2:

待辦事項Cre吃

<form action="" method="post">{% csrf_token %} 
     {{ form.name }} 
     <button type="submit" class="btn primary">Create &rarr;</button> 
    </form> 

待辦事項列表

{% if task_list %} 
    <p><a href="{% url task_create %}">Create a task</a></p> 
    <ul> 
    {% for task in task_list %} 
     <li><a href="{% url task_detail task.id %}">{{ task.name }}</a></li> 
    {% endfor %} 
    </ul> 
    {% else %} 
     <p>No tasks to display, click to <a href="{% url task_create %}">create new</a>.</p> 
    {% endif %} 

回答

3

所以,你只是想訪問控制補充呢?

  1. auth.User加入ForeignKey到你的待辦事項模型
  2. 重寫你的清單,創建視圖,使手動他們的工作(你可以實現與新的基於類的觀點你的目標,但你要明白,他們首先的工作怎麼辦)
  3. 用於查詢集添加篩選器列表視圖
  4. 提供commit=False爲檢索對象表單的save(),建立用戶和手動保存它

代碼:

class Task(models.Model): 
    user = models.ForeignKey('auth.User') 
    name = models.CharField(max_length=100) 
    added_at = models.DateTimeField(auto_now_add=True) 
    last_update = models.DateTimeField(auto_now=True) 

class TaskForm(forms.ModelForm): 
    class Meta: 
     model = Task 
     exclude = ['user', ] 

def task_create(request): 
    form = TaskForm(data=request.POST or None) 
    if request.method == 'POST' and form.is_valid(): 
     task = form.save(commit=False) 
     task.user = request.user 
     task.save() 
     return reverse("todo_list") 
    return render(request, 
     'task_create.html', 
     {'form': form} 
    ) 

此外,在列表視圖通過request.user添加過濾和我建議@login_required裝飾,以避免非授權用戶添加任務。

+0

你能提供一個上面的代碼的例子嗎? – 2012-04-23 01:03:50

+1

author = models.Foreignkey(User)https://docs.djangoproject.com/en/dev/ref/models/fields/#foreignkey – 2012-04-23 04:52:11

+0

新增'create'示例 – ilvar 2012-04-23 15:16:46