저는 django를 사용하여 작은 블로그를 만들고 있습니다. 게시물 작성자가 자신의 게시물을 삭제하고 업데이트 할 수있는 기능을 만들고 싶습니다. 그런 다음 장고에 일반보기로 LoginMixin이 있지만 로그인하지 않은 사용자 만 차단합니다.Django는 특정 사용자에게만 제한된 일반 업데이트보기를 작성합니다.
내 문서 모델이 일반 기사 상세보기입니다
class Article(models.Model):
author = models.ForeignKey(User)
updated = models.DateTimeField(auto_now=True)
created = models.DateTimeField(auto_now_add=True)
title = models.CharField(max_length=50)
context = models.TextField()
genre_choice = (('O','Others'),('P','Programming'),('L','Learning'),('E','Entertainment'))
genre = models.CharField(max_length=2,choices=genre_choice,default='O')
def __str__(self):
return "{} - {}".format(self.title,self.author)
def get_absolute_url(self):
return reverse("article-detail",args=str(self.id))
이하 같다.
class ArticleDetail(DetailView):
model = Article
내가 먼저 상세 템플릿이 같은 것을 추가 할
:
{% if article.author == user.username%}
<!-- Some a tag that directs to the update view -->
{% endif %}
그런 다음 나는 이것이 바로 태그를 숨 깁니다 실현, 그것은 업데이트 URL을 눌러 다른 사용자를 중지 할 수 있습니다 단순히 URL을 변경하십시오.
django는 일반 뷰를 사용하여 원래 사용자에게 업데이트 및 삭제 권한을 제한 할 수 있습니까? 직접 업데이트 URL을 입력하더라도 거부됩니다.
그래! 감사합니다!이 실제로 문제를 해결을 표시하지 있는지 확인하기 위해 자신의 믹스 인/장식을 만드는 것입니다! – honesty1997
이제 작성자가 아닌 업데이트 URL을 터치하려고하면 404 오류가 표시됩니다. – honesty1997
예, 맞습니다. 저자에게만 업데이트 링크를 보여주고 싶기 때문에 괜찮을 거라고 생각했습니다. 이것은 장고에서의 전형적인 접근법입니다. 404 대신 권한 거부 메시지를 표시하려면 다른 접근 방식을 시도해야하며 코드가 더 복잡 할 것입니다. – Alasdair