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']