2008-12-17 105 views
0

在Django中將內容類型限制爲用戶的最佳方式是什麼?每個具有「博客角色」的Django用戶的博客

讓我們說我希望擁有用戶角色「博主」的所有用戶擁有自己的博客。

我已經創建了一個網絡日誌應用程序。我如何限制它,以便登錄的用戶只能在他的「自己的」博客中發佈,以及如何製作只顯示用戶博客的視圖?

回答

4

首先你的博客條目必須附加到用戶,所以你知道誰的博客顯示,對吧? models.py:

class BlogEntry(models.Model): 
    user = models.ForeignKey(User, related_name='blog_entries') 
    other_field_1 = ... 
    other_field_2 = ... 

接下來,跳過它的ModelForm,forms.py:

class BlogEntryModelForm(forms.ModelForm): 
    class Meta: 
     exclude = ('user',) 

然後,當用戶想進入後您需要他的記錄,views.py:

@login_required 
def post_blog_entry(request): 
    .... 
    if request.method == 'POST': 
     form = BlogEntryModelForm(request.POST) 
     if form.is_valid(): 
      new_entry = form.save(commit=False) 
      new_entry.user = request.user 
      new_entry.save() 

當你想顯示一些用戶的博客,views.py:

def view_blog(request, blogger_name): 
    user = get_object_or_404(User, username=blogger_name) 
    entries = user.blog_entries.all() 

用戶是django.contrib.auth.models.User 如果用戶無權創建博客,則可以向上述視​​圖添加自定義角色檢查以顯示404頁面或錯誤頁面。

您也可以選擇與自己的用戶實現從django.contrib.auth更換用戶,但你得寫模式,認證和中間件爲它以及...

-1

我沒有嘗試實現這一點,但我發現另一個靈魂工作非常好。這很容易實現,並做了我想要的一切。

Check it out...

+0

好,你問如何使看法,並不怎麼修改管理員的觀點默認行爲 – rombarcz 2008-12-20 01:02:05