<div class="blogpost-body" id="cnblogs_post_body">
<h2 class="md-end-block md-heading md-focus"><span class="md-plain md-expand">一、功能需求分析</span></h2>
<h4 class="md-end-block md-heading"><span class="md-plain">1.功能</span></h4>
<ol class="ol-list"><li class="md-list-item"> <p class="md-end-block md-p"><span class="md-plain">新闻详情</span></p> </li><li class="md-list-item"> <p class="md-end-block md-p"><span class="md-plain">加载评论功能</span></p> </li><li class="md-list-item"> <p class="md-end-block md-p"><span class="md-plain">添加评论功能</span></p> </li></ol>
<h2 class="md-end-block md-heading"><span class="md-plain">二、新闻详情页</span></h2>
<h4 class="md-end-block md-heading"><span class="md-plain">1.业务流程分析</span></h4>
<p class="md-end-block md-p"><span class="md-plain">业务流程:</span></p>
<ol class="ol-list"><li class="md-list-item"> <p class="md-end-block md-p"><span class="md-plain">判断前端传递新闻id是否为空,是否为整数,是否存在</span></p> </li></ol>
<h4 class="md-end-block md-heading"><span class="md-plain">2.接口设计</span></h4>
<ol class="ol-list"><li class="md-list-item"> <p class="md-end-block md-p"><span class="md-plain">接口说明:</span></p> </li></ol>
<table class="md-table"><thead><tr class="md-end-block"><th><span class="td-span"><span class="md-plain">类目</span></span></th><th><span class="td-span"><span class="md-plain">说明</span></span></th></tr></thead><tbody><tr class="md-end-block"><td><span class="td-span"><span class="md-plain">请求方法</span></span></td><td><span class="td-span"><span class="md-plain">GET</span></span></td></tr><tr class="md-end-block"><td><span class="td-span"><span class="md-plain">url定义</span></span></td><td><span class="td-span"><code>/news/<int:news_id>/</code></span></td></tr><tr class="md-end-block"><td><span class="td-span"><span class="md-plain">参数格式</span></span></td><td><span class="td-span"><span class="md-plain">url路径参数</span></span></td></tr></tbody></table>
<ol class="ol-list" start="2"><li class="md-list-item"> <p class="md-end-block md-p"><span class="md-plain">参数说明:</span></p> </li></ol>
<table class="md-table"><thead><tr class="md-end-block"><th><span class="td-span"><span class="md-plain">参数名</span></span></th><th><span class="td-span"><span class="md-plain">类型</span></span></th><th><span class="td-span"><span class="md-plain">是否必须</span></span></th><th><span class="td-span"><span class="md-plain">描述</span></span></th></tr></thead><tbody><tr class="md-end-block"><td><span class="td-span"><span class="md-plain">news_id</span></span></td><td><span class="td-span"><span class="md-plain">整数</span></span></td><td><span class="td-span"><span class="md-plain">是</span></span></td><td><span class="td-span"><span class="md-plain">新闻id</span></span></td></tr></tbody></table>
<ol class="ol-list" start="3"><li class="md-list-item"> <p class="md-end-block md-p"><span class="md-plain">返回结果:</span></p> <p class="md-end-block md-p"><span class="md-plain">html页面,直接通过模板渲染的方式实现</span></p> </li></ol>
<h4 class="md-end-block md-heading"><span class="md-plain">3.后端代码</span></h4>
<p class="md-end-block md-p"><span class="md-plain">视图</span></p>
<div class="cnblogs_code">
<pre class="blockcode"><span style="color:#008000;">#</span><span style="color:#008000;"> 在news/views.py中定义如下视图</span>
<span style="color:#0000ff;">class</span><span style="color:#000000;"> NewDetailView(View):
</span><span style="color:#0000ff;">def</span><span style="color:#000000;"> get(self, request, news_id):
news </span>= News.objects.select_related(<span style="color:#800000;">'</span><span style="color:#800000;">tag</span><span style="color:#800000;">'</span>, <span style="color:#800000;">'</span><span style="color:#800000;">author</span><span style="color:#800000;">'</span><span style="color:#000000;">).only(
</span><span style="color:#800000;">'</span><span style="color:#800000;">title</span><span style="color:#800000;">'</span>, <span style="color:#800000;">'</span><span style="color:#800000;">content</span><span style="color:#800000;">'</span>, <span style="color:#800000;">'</span><span style="color:#800000;">update_time</span><span style="color:#800000;">'</span>, <span style="color:#800000;">'</span><span style="color:#800000;">tag__name</span><span style="color:#800000;">'</span>, <span style="color:#800000;">'</span><span style="color:#800000;">author__username</span><span style="color:#800000;">'</span><span style="color:#000000;">).filter(
is_delete</span>=False, id=<span style="color:#000000;">news_id).first()
</span><span style="color:#0000ff;">if</span><span style="color:#000000;"> news:
</span><span style="color:#0000ff;">return</span> render(request, <span style="color:#800000;">'</span><span style="color:#800000;">news/news_detail.html</span><span style="color:#800000;">'</span>, context=<span style="color:#000000;">{
</span><span style="color:#800000;">'</span><span style="color:#800000;">news</span><span style="color:#800000;">'</span><span style="color:#000000;">: news |
|