Django开发BBS---51网络课程笔记(2)

接着上节的内容,来添加前端的代码,http://4440271.blog.51cto.com/4430271/1663863


首先,在http://v3.bootcss.com/getting-started/找到一个样式:


这里使用http://v3.bootcss.com/examples/navbar-static-top/

的样式:

wKioL1WFQVTwd1cmAACJSfowt3I910.jpg

将页面下载下来,添加到:

wKioL1WFQ6qgE7O8AACFwrMja6g143.jpg

中,添加完成后,需要在settings.py中引入改目录:

wKiom1WFQvyiAlMHAAH7JSKFuAY502.jpg


在statics目录中,有网页中的js,css的文件,这些文件需要拷贝到目录用:

wKioL1WFRUrSn0xOAAArCcUMxrk833.jpg

这里给出下载地址:

http://down.51cto.com/4430271

中下载statics


这里要对页面的内容要做一些修改。这里只上传修改好的内容。

对于前端的介绍,详细描述在:http://4440271.blog.51cto.com/4430271/1663934


在url.py中添加

wKiom1WFbvfR39AQAALKZ7hzC-c524.jpg


在views.py中添加视图:


wKiom1WFf0OwZG5wAAKxNeEVkYA302.jpg

index的页面部分基本完成

视图与html页面的链接过程都是一样的,因此之后的添加不做专门介绍,只在代码中给出解释。




接下来加入评论页面:

首先,评论页面继承自index

其次,评论页面主要的显示首先是bbs_detail的内容,然后显示评论的内容,还应该有添加评论的地方。用bbs_detail.html完成这一页面, 我们分别描述各个部分,在博客的最后一篇中,我们会给出完整的代码。

wKioL1WGb0jA2zXGAAFUr5z2F_8474.jpg


在views.py中,应当添加相应的模块:

wKiom1WGbo-xfqvzAAEuXsrD7QY722.jpg


对于评论部分

wKioL1WGduHj0ZvUAAD-waeKfXA329.jpg


wKioL1WGdyDyOy46AAK0ioZyVrI953.jpg


在views.py中

wKiom1WGdSmj2AxeAAG3k3ezy4w158.jpg

这里,有个地方需要说明,就是 content_type_id,他是对数据库中所有表排列后给每个表的id号,在我们的项目中,bbs表所在的id号为7;

wKioL1WGfFCg-3lfAAGi117HN9o996.jpg


同时在url中添加

wKioL1WGd32AB8QVAAEc1b5gxQQ487.jpg


其结果如下:

wKioL1WGgJXDEPv5AACc4bvpbyY495.jpg



然后是发帖的页面及功能:

在页面部分,我们使用一个在线插件:http://www.tinymce.com/download/download.php

来使得输入页面比较美观:

wKiom1WGhk6gVRyPAAKEiVNc5ZQ334.jpg


将下载后的文件放到statics目录下

其用法在:http://www.tinymce.com/wiki.php/Installation

wKioL1WGiMiyH6ldAAGYDpW-qMk625.jpg

其页面效果:

wKioL1WG26-w6ONTAAG9zzHbdJY687.jpg


实现代码部分如下:


<link href="/static/css/signin.css" rel="stylesheet">
{% extends 'index.html' %}

{% block page-content %}

<!-- Place inside the <head> of your HTML -->
<script type="text/javascript" src="/static/tinymce/js/tinymce/tinymce.min.js"></script>
<script type="text/javascript">

tinymce.init({
	selector: "textarea",
    theme: "modern",
    plugins: [
        "advlist autolink lists link image charmap print preview hr anchor pagebreak",
        "searchreplace wordcount visualblocks visualchars code fullscreen",
        "insertdatetime media nonbreaking save table contextmenu directionality",
        "emoticons template paste textcolor colorpicker textpattern"
    ],
    toolbar1: "insertfile undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image",
    toolbar2: "print preview media | forecolor backcolor emoticons",
    image_advtab: true,
    templates: [
        {title: 'Test template 1', content: 'Test 1'},
        {title: 'Test template 2', content: 'Test 2'}
    ]
});

</script>

<!-- Place this in the body of the page content -->
<form method="post" action="/bbs_sub/">
    <h3>Title</h3>
    <input type="text" name="title" class="form-control" placeholder="" required>
    <hr>
    <h3>Content</h3>
    <textarea name="content"></textarea>
    <hr>
    <h3>Summary</h3>
    <input type="text" name="summary" class="form-control" placeholder="Summary" required>
    <br>
    <div class="form-signin">
        <button class="btn btn-lg btn-primary btn-block" type="submit">Save</button>
    </div>
{#    <input type='submit' value='Save' />#}

</form>


{% endblock %}


在views.py中,获取前端传来的数据,导入到数据库中:


def bbs_pub(request):
    return render_to_response('bbs_pub.html')


def bbs_sub(request):
    print request.POST.get('content')
    title = request.POST.get('title')
    content = request.POST.get('content')
    summary = request.POST.get('summary')
    author = models.BBS_user.objects.get(user__username=request.user)
    models.BBS.objects.create(
        title=title,
        summary=summary,
        content=content,
        author=author,
        view_count=1,
        ranking=1,
        #created_at=models.DateTimeField(auto_now_add=True),  # 创建日期
        #updated_at = models.DateTimeField(auto_now_add=True),  # 修改日期
    )
    return HttpResponse("<h2>Bbs was published, please enter <br/><a href='/'>return</a> to index!<h2>")


到此为止,其功能基本实现完成,但是,这个系统只是简单的将django中的内容的一个拼凑,其中还有很多的问题,比如事件处理等。

下一节中,我们将给出bbc_pro的完整代码和最终的显示效果。








你可能感兴趣的:(django)