1.博客配图问题
在管理员页面添加博客时,可以添加博客配图,那么,图片被保存在哪里呢?显然直接把图片保存在数据库里是不太可能的,所以将图片保存在项目的文件夹下,数据库中只保存图片的路径即可。
(1)settings.py配置
MEDIA_ROOT = os.path.join(BASE_DIR, 'media').replace("\\", "/")
//在根目录中创建一个media文件夹
MEDIA_URL = '/media/'
(2)website/urls.py配置
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^blog/', include('blog.urls')), # 将以blog/开头的路由转发到blog.urls
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
这样图片就会上传到media文件夹下的blog_images文件夹下了。
2.博客首页设计
(1)views.py配置,用来获取所有博客文章
from . import models
def index(request):
entry_list = models.Entry.objects.all()
page = request.GET.get('page', 1) # 分页功能
entry_list, paginator = make_paginator(entries, page)
page_data = pagination_data(paginator, page)
return render(request, 'blog/index.html', locals())
(2)model.py配置,为了查看每条博客的详细内容,点击首页的微博标题后,自动生成一个url并进行跳转。
from django.urls import reverse
def get_absolute_url(self):
return reverse('blog:blog_detail', kwargs={
'blog_id': self.id}) # blog为app的名字,通过当前博客的id生成一个url,例如http://127.0.0.1/blog/3
(3)index.html配置
{
% for entry in entry_list %}
<br/>
<h2><a href="{
{ entry.get_absolute_url }}">{
{
entry.title }}</a></h2>
{
% if entry.img %}
<div><img src="{
{ entry.img.url }}" alt="博客配图" width="50%"/></div>
{
% endif %