在Django中將內容類型限制爲用戶的最佳方式是什麼?每個具有「博客角色」的Django用戶的博客
讓我們說我希望擁有用戶角色「博主」的所有用戶擁有自己的博客。
我已經創建了一個網絡日誌應用程序。我如何限制它,以便登錄的用戶只能在他的「自己的」博客中發佈,以及如何製作只顯示用戶博客的視圖?
在Django中將內容類型限制爲用戶的最佳方式是什麼?每個具有「博客角色」的Django用戶的博客
讓我們說我希望擁有用戶角色「博主」的所有用戶擁有自己的博客。
我已經創建了一個網絡日誌應用程序。我如何限制它,以便登錄的用戶只能在他的「自己的」博客中發佈,以及如何製作只顯示用戶博客的視圖?
首先你的博客條目必須附加到用戶,所以你知道誰的博客顯示,對吧? 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更換用戶,但你得寫模式,認證和中間件爲它以及...
我沒有嘗試實現這一點,但我發現另一個靈魂工作非常好。這很容易實現,並做了我想要的一切。
好,你問如何使看法,並不怎麼修改管理員的觀點默認行爲 – rombarcz 2008-12-20 01:02:05