根据需要,我们大概需要三个部分:
1.博客主页面
2.博客文章内容页面
3.博客撰写页面
主页面内容
- 文件标题列表,超链接
- 发表博客按钮
编写思路:
取出数据库中所有文章对象
将文章对象打包成列表,传递到前端
前端页面把文章以标题超链接的形式逐个列出
博客文章页面
页面内容:
- 标题
- 文章内容
- 修改文章按钮
废话不多说,我们开始编写代码。首先在views.py中修改和编写函数:
def index(request):
articles = models.Article.objects.all() #获取所有的文章对象
return render(request, "blog/index.html", {'articles': articles})
在这里补充一下render函数:
_ render(request, template_name, context=None, content_type=None, status=None, using=None)_
Returns a HttpResponse whose content is filled with the result of calling django.template.loader.render_to_string() with the passed arguments.
此方法的作用---结合一个给定的模板和一个给定的上下文字典,并返回一个渲染后的 HttpResponse 对象。
通俗的讲就是把context的内容, 加载进templates中定义的文件, 并通过浏览器渲染呈现.
参数讲解:
request: 是一个固定参数, 没什么好讲的。
template_name: templates 中定义的文件, 要注意路径名. 比如'templates\polls\index.html', 参数就要写‘polls\index.html’
context: 要传入文件中用于渲染呈现的数据, 默认是字典格式
content_type: 生成的文档要使用的MIME 类型。默认为DEFAULT_CONTENT_TYPE 设置的值。
status: http的响应代码,默认是200.
using: 用于加载模板使用的模板引擎的名称。
常见的MIME类型(通用型):
超文本标记语言文本 .html text/html
xml文档 .xml text/xml
XHTML文档 .xhtml application/xhtml+xml
普通文本 .txt text/plain
RTF文本 .rtf application/rtf
PDF文档 .pdf application/pdf
Microsoft Word文件 .word application/msword
PNG图像 .png image/png
GIF图形 .gif image/gif
JPEG图形 .jpeg,.jpg image/jpeg
au声音文件 .au audio/basic
MIDI音乐文件 mid,.midi audio/midi,audio/x-midi
RealAudio音乐文件 .ra, .ram audio/x-pn-realaudio
MPEG文件 .mpg,.mpeg video/mpeg
AVI文件 .avi video/x-msvideo
GZIP文件 .gz application/x-gzip
TAR文件 .tar application/x-tar
任意的二进制数据 application/octet-stream
接着,我们修改index.html模板文件:
<body>
<h1><a href="">新文章</a></h1>#标题
{% for article in articles %} #Django模板语言
<a href="">{{ article.title }}</a> #文章标题
<br/>
{% endfor %}
</body>
这样,主页面的前端和后端就都写完了。接着我们编写文章页面的后端,进入views.py添加如下函数:
def article_page(request,article_id):
#获取文章对象
article = models.Article.objects.get(pk = article_id)
return render(request,'blog/article_page.html',{'article':article})
其中的article_id参数是作为文章的唯一标识(id),是django支持的。
然后写前端,新建一个模板文件article_page.html,在body中添加:
<body>
<h1>{{ article.title }}</h1> #获取文章标题
<br/>
<br/>
{{ article.content }} #获取文章内容
<br/><br/>
<a href="">修改文章</a> #指向修改文章页面的超链接,留待后用
</body>
有关于页面的前后端写完后我们就要配置URL了。来到blog目录下的urls.py中,向urlpatterns中添加代码如下:
url(r'^article/(?P<article_id>[0-9]+)$',views.article_page)#第一个参数是有关正则表达式的内容
这样我们的页面就简单的搭建好了。
django第一课:创建第一个页面
Django第二课:创建第一个页面(响应),template
Django第三课:models
Django第四课:Admain简介