构建视图
流程: 视图—URL—template
打开visws.py
from django.shortcuts import render,get_object_or_404
from .models import Post
添加标题视图
def post_list(request):
posts = Post.Published.all()
return render(request,‘blog/post/list.html’,{‘posts’: posts})
添加文章内容的视图
def post_detail(request, year, month, day, post, posts):
post = get_object_or_404(Post,slug=post,
status=‘published’,
publish__year = year,
publish__month= month,
publish__day = day)
return render(request,‘blog/post/detail.html’,{‘post’: post})
为视图制定URL
一个URL模式是由一个Python 正则表达,一个视图(view),一个全项目范围内的命名组成。
Django在运行中会遍历所有URL模式直到第一个匹配的请求URL才停止
在blog内新建一个urls.py
添加以下代码
from django.conf.urls import url
from . import views
urlpatterns = [
url(r’^$’, views.post_list,name=‘post_list’),
]
进入主 urls.py
里面代码为下
from django.conf.urls import url,include
from django.contrib import admin
urlpatterns = [
url(r’^admin/’, admin.site.urls),
url(r’^blog/’, include(‘blog.urls’, namespace=‘blog’)),
]
进入blog内的urls.py
里面代码为下
from django.conf.urls import url
from . import views
app_name = ‘blog’
urlpatterns = [
url(r’^$’, views.post_list,name=‘post_list’),
]
在blog下新建目录
templates----blog----post
static—css
在此目录下新建三个页面
detail.html list.html base.html
在blog下的urls.py中增加
url(r’(?P\d{4})/(?P\d{2})/(?P)\d{2}/’
r’(?P[-\w]+)/$’, views.post_detail,name=‘post_datail’)
在models.py中增加
from django.urls import reverse
再在下面增加一个函数
def get_absolute_usrl(self):
return reverse(‘blog:post_detail’,args=[self.publish.year,
self.publish.strftime(’%m’),
self.publish.strftime(’%d’),
self.slug])
创建模板
到settings.py 中增加一段代码
STATIC_ROOT = os.path.join(BASE_DIR,‘static’)
下载一个css 放css文件夹内 blog.css
编辑base.html
进入list.html 编辑
编辑betail.html
env中同步 python manage.py makemigrations
python manage.py migrate