django的通用视图

django.views.geneic :django.视图.通用的

有时候编写视图是一种很繁重的任务,在django.views中存在的generic  刚好可以解决这个问题。减少工作量,主要的是List

 

1.首先看几个实例

#models.py
class Post(models.Model):
    title=models.CharField(max_length=60)
    title_tag=models.CharField(max_length=60,blank=True,default="其它")
    author=models.ForeignKey(User,on_delete=models.SET_DEFAULT ,default='匿名')
    body= models.TextField()
    def __str__(self):
        return  self.title +' | ' +self.author.user +'...'
#下面是view.py的文件
class HomeView(ListView):       #通用视图作为视图类的父类 ,指定一个model= 上述models.py中的一个模型
    model = Post 
    template_name = 'main.html'
class ArticleDetailView(DetailView):
    model = Post
    template_name = 'article_detail.html'
#下面是template中的内容
<ul>
{% for post in post_list%}
    <li><a href="{% url 'article_detail' post.pk  %}">{{post.title}}</a> -来自: {{post.author}}<br/>
    {{post.body}}</li>
{% endfor %}
</ul>

#下面是urls.py的设置
from  .views import HomeView,ArticleDetailView
urlpatterns = [
    path('',HomeView.as_view(),name="home"),  #引用一个视图中的类.as_view()
    path('article/<int:pk>',ArticleDetailView.as_view(),name='article_detail'),
]
 

 

 import django.views.generic  as generic
dir(generic)
'''
输出
['ArchiveIndexView',   'CreateView', 
'DateDetailView',      'DayArchiveView', 
'DeleteView',          'DetailView',
'FormView',            'GenericViewError',
'ListView',            'MonthArchiveView', 
'RedirectView',        'TemplateView', 
'TodayArchiveView',    'UpdateView', 
'View', 'WeekArchiveView', 'YearArchiveView', '__all__', '__builtins__', '__cached__', '__doc__', '__file__',
'__loader__', '__name__',
'__package__', '__path__',
'__spec__', 'base', 'dates',
'detail', 'edit', 'list']

 

posted on 2023-01-02 19:24  《=》  阅读(30)  评论(0编辑  收藏  举报